gpt4 book ai didi

java - 我可以在外部类的构造函数中实例化一个匿名类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:41 26 4
gpt4 key购买 nike

我有以下代码:

public class Outer {
public Interface Anony {
public void callback();
}

public Outer() {
OtherClass.foo(new Anony() {
@Override
public void callback() {
....
}
});
}
}

但是我 friend 告诉我里面有问题。我在Outer的构造函数中创建了一个匿名类实例,所以匿名类实例隐式引用了Outer类实例,即Outer.this。但是此时,Outer 类实例还没有完全创建。因此,匿名类实例引用了一个状态不完整的对象,因此出现了问题。

他说的对吗?谢谢。

最佳答案

friend 说的对,当然要看用法

问题不在于在构造函数中创建内部类。如果内部类访问外部类,就会出现这个问题。

这是因为任何对象都无法在构造函数内赋予正常的受赠者。对象操作所需的所有变量可能尚未初始化等。

然而,如果内部类放在构造函数的末尾,我看不到这个问题发生,但请记住这是一个危险的策略,因为有人可能会修改代码,然后调试器就到了 wtf 时间了。 .

关于java - 我可以在外部类的构造函数中实例化一个匿名类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com