![]() |
1
4
尽管它是合法的Java,而且在您描述的情况下(它是构造函数的最后一行),它是一个相当安全的事情(某些边缘情况除外),作为实践,它是一个不好的事情,并且喜欢使用
我还应该指出,类之间的那种相互依赖(管理器知道游戏,游戏知道管理器)绝对是一种代码味道,我会像从构造函数传递这种气味一样,关心对它的需要。 |
![]() |
2
3
可以 那样做,但是你 .
This IBM developerWorks article
(最后一段是从 one of my earlier answers ). |
![]() |
4
1
正如@James所说,你可以,但这不一定是你想做的。如果
|
![]() |
6
0
这种技术违反了java并发概念之一——安全发布。你应该用
您可以在 引用已被转义。如果将对象在其构造函数中的实例传递给另一个对象,则可以在构造期间获取回调。它会导致不一致的行为,NPEs,死锁等等。 |
![]() |
7
0
孩子,这不安全!虽然代码有效,但设计不好!您的代码允许“this”引用在正确构造对象之前转义。 想象一下game.addManager()将调用“this”引用上的某个方法xxx()。 我们有一个子类Manager,ChildManager,它重写方法xxx(),这个方法依赖于ChildManager中的一个字段(当超级构造函数到达它的最后一行代码时,这个字段不会初始化)。 addManager()将在ChildManager中看到字段的未初始化值,这非常危险!
|
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 4 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 4 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |