gpt4 book ai didi

java - 如何初始化我的单例对象

转载 作者:行者123 更新时间:2023-11-29 06:44:28 24 4
gpt4 key购买 nike

public class FooClient {

private Foo foo;
private final static String key = "<api-key>";

private static FooClient client = new FooClient();

private FooClient() {
foo = new Foo(key);
}

public static FooClient getFooClient() {
return client;
}
}
  1. 以上述方式初始化client是否可以。
  2. 我应该声明 private Foo foo 吗?作为静态的,我猜它不是这样的。
  3. 如果我必须为不同的键支持不同的单例,我是否应该修改 getFooClient(String key) 以接收一个键并缓存它,以便我可以返回特定于键的单例 FooClients。

最佳答案

  1. 是的。在构造函数中,您可以检查是否 client != null如果是 - 抛出错误。 (这将对抗反射实例化)

  2. 不是,是单例的实例字段

  3. 是的。你应该有一个 Map<String, Foo> .但请注意,这不是“不同的单例”——你的单例是“客户”。其他类可以多次实例化。

关于java - 如何初始化我的单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358106/

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