【发布时间】:2013-05-17 18:55:33
【问题描述】:
我有以下代码:
public class Outer {
public Interface Anony {
public void callback();
}
public Outer() {
OtherClass.foo(new Anony() {
@Override
public void callback() {
....
}
});
}
}
但是我的朋友告诉我这里面有一些问题。我在Outer的构造函数中创建了一个匿名类实例,所以匿名类实例隐式引用了Outer类实例,即Outer.this。但是此时,Outer 类实例还没有完全创建。所以匿名类实例引用了一个状态不完整的对象,因此出现了问题。
他说的对吗?谢谢。
【问题讨论】:
-
Anony 是一个接口,不是类!
-
是的,但是 new Anony() {...} 创建了一个匿名类实例。对。
-
@zEro 是的,
Anony是一个接口,但这是创建实现接口的匿名类实例的语法。实例化扩展另一个类的匿名类的实例时使用相同的语法。 -
对对对。我需要我的咖啡! :D
-
如果您接受答案,我的投票是给 Thihara 的。他早在我之前就给了你一个更好的解释。
标签: java