gpt4 book ai didi

java - 如何确保仅从另一个类初始化一个实例?

转载 作者:行者123 更新时间:2023-11-30 06:04:08 25 4
gpt4 key购买 nike

我最近读到了有关单例原则的内容,但我不太明白如果构造函数是私有(private),如何从另一个类初始化一个类的单个实例。如果构造函数应该是 private,如何从另一个类设置参数?

public class Player {

String name;
Position p;
Inventory i;

private Player(String name, Position p, Inventory i){

}

static {
instance =
}

public static Player getPlayer(){
return instance;
}

}

最佳答案

您应该创建一个 private static Player 变量,并在您的 getPlayer() 方法或静态 block 中创建该对象并分配给上面的变量(如果它为 null) .

public static Player getPlayer(){
if(player == null){
player = new Player("name", p, i);
}
return player;
}

这样您只创建一个实例。


简单的规则,

  1. 类的构造函数应该是私有(private)
  2. 将对象保存在私有(private)静态变量中。
  3. 为单例对象创建 getter(无 setter)。
  4. 您还可以向 getter 添加 synchronized 以使其线程安全(可选)。

关于java - 如何确保仅从另一个类初始化一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473284/

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