我可以执行以下操作吗?
public Manager(String userName) {
game = new Game(userName);
game.addManager(this);
}
问题是我在其构造函数中引用了一个对象 (this
)(在实际创建之前)。
最佳答案
尽管它是合法的 Java,并且在您描述的情况下(它是构造函数的最后一行),这是一件非常安全的事情(某些边缘情况除外),但作为实践,这是一件坏事做,就像使用 goto
(在支持关键字的语言中)一样,它应该是您长期认真思考的事情。对于您的情况,更好的做法是将构造函数设为私有(private),删除对 addManager 的调用并公开一个静态工厂方法:
public static Manager createManager(String userName) {
Manager manager = new Manager(userName);
manager.game.addManager(manager);
return manager;
}
我还应该指出,类之间的那种相互依赖性(经理知道游戏,游戏也知道经理)绝对是一种代码味道,我会像我一样担心这种需要是关于从构造函数传递这个。
关于java - 我可以在其构造函数中引用一个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683735/