gpt4 book ai didi

Java Singleton 有不同的 toString() 值

转载 作者:行者123 更新时间:2023-12-01 06:43:50 24 4
gpt4 key购买 nike

我有一个用 java 实现的经典单例

public class ClassicSingleton {

private static ClassicSingleton instance = null;

private ClassicSingleton() {} ;

public static ClassicSingleton getInstance() {
if (instance == null)
return new ClassicSingleton();
return instance;
}
}

我有以下驱动程序

public class SingletonDriver {

public static void main(String[] args) {
System.out.println(ClassicSingleton.getInstance().toString());
System.out.println(ClassicSingleton.getInstance().toString());
}
}

输出类似于

ClassicSingleton@75e4f66a
ClassicSingleton@aede59e

我认为输出会指向同一个对象。值不应该相同吗?

最佳答案

您的 getInstance() 实现是错误的。您永远不会初始化实例,因此每次调用时都会返回一个新实例。如果 instancenull,您应该将其保存到数据成员中,然后才返回它:

public static ClassicSingleton getInstance() {
if (instance == null)
instance = new ClassicSingleton();
return instance;
}

关于Java Singleton 有不同的 toString() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717337/

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