gpt4 book ai didi

java - 我可以在其构造函数中引用一个对象吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:30:23 25 4
gpt4 key购买 nike

我可以执行以下操作吗?

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/

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