我正在阅读 Joshua Bloch 的《Effective Java》第二版。目前我在第 22 项,它描述了内部类和嵌套类,但我无法理解他这句话的意思:
匿名类具有封闭实例当且仅当它们发生时
在非静态上下文中。
有人能给我一个代码示例并解释它到底做什么吗?我知道如果InnerClass
是的成员OuterClass
它的封闭实例是OuterClass
,但就匿名类而言,这对我来说听起来很奇怪。
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hello world");
}
};
}
这里,一个匿名类实例是从静态上下文创建的。所以它没有任何封闭实例。
public class Foo {
public void bar() {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hello world");
}
};
}
private void baz() {
}
}
这里,一个匿名类实例是从实例方法创建的。所以它有一个封闭的实例。这run()
方法可以调用baz()
or Foo.this.baz()
,从而从该封闭实例访问方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)