Я прочитал учебник по внутренним классам и ничего не понимаю.Говорят, что внутренний класс содержит скрытую ссылку на внешний класс, поэтому я задаю несколько вопросов через этот простой класс:
public class OuterClass {
public void doSomething() {
JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
}
Итак, у нас есть один локальный внутренний класс, который находится внутри метода doSomething()
иУ меня есть несколько вопросов.
Содержит ли этот локальный внутренний класс ссылку на OuterClass, поскольку он локальный?
Этот локальный внутренний класс остается в памятипосле завершения метода doSomething()
?
Есть ли ситуации, когда OuterClass имеет право на GC, но на другие внутренние классы все еще ссылаются другие классы?Что случилось бы?