Рассмотрим следующий фрагмент кода:Установка экземпляра внешнего класса в null, и все же внутренние экземпляры класса могут обращаться к внешнему классу. Как?
class OuterClass{
String ocs="ocs";
class InnerClass{
String ics="ics";
void innerMeth(){
System.out.println(ocs);
}
}
}
//main class
public class HelloWorld{
public static void main(String []args){
OuterClass ob=new OuterClass();
OuterClass.InnerClass ob1=ob.new InnerClass();
ob=null;
ob1.innerMeth();
}
}
Все еще печатает строку 'OCS'.
в основном даже если я установлен OuterClass
экземпляр для null.
экземпляр все еще может обращаться к OuterClass
справка поле ocs
Как?
Это как-то связано с закрытием? поддерживая переменные в контексте даже после того, как контекст больше не является, в данном случае объектом OuterClass
.
Экземпляр не может быть пустым. Это не концепция, которая существует. Переменная может хранить значение «null». Это не влияет на другую ссылку на объект. –