【发布时间】:2015-02-04 08:20:00
【问题描述】:
考虑以下代码:
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 实例设置为空。InnerClass 实例仍然可以访问OuterClass 引用的字段ocs
如何 ?
这与闭包有关吗?即,即使在上下文不再存在之后,也可以在上下文中维护变量,在这种情况下是 OuterClass 对象。
【问题讨论】:
-
实例不能为空。这不是一个存在的概念。变量可以存储值
null。这不会影响对对象的任何其他引用。
标签: java nested closures inner-classes