java - 单例类每次都返回新实例

标签 java class singleton

我正在尝试创建一个单例类,但它每次都会返回一个新实例。这是我的代码。

我有什么错误吗?为什么每次都会返回一个新实例?

我想应该是一样的。

public final class SingletonA {     
    private static SingletonA instance;

    private SingletonA(){
    }

    public static SingletonA getInstance() {    
        if(instance==null)
        {
            System.out.println("RETURNING NEW INSTANCE OF SingletonA Class");
            return new SingletonA();
        }
        System.out.println("RETURNING OLD INSTANCE OF SingletonA Class");
        return instance;
    }
}

public class SingletonB {
    public static void main(String[] args) {
        SingletonA one = SingletonA.getInstance();
        System.out.println("1."+one+" | "+one.hashCode());

        SingletonA two = SingletonA.getInstance();
        System.out.println("2."+two+" | "+two.hashCode());

        SingletonA three = SingletonA.getInstance();
        System.out.println("3."+three+" | "+three.hashCode());
    }
}

// HERE IS THE OUTPUT
RETURNING NEW INSTANCE OF SingletonA Class
1.oop.singleton.SingletonA@2a139a55 | 705927765
RETURNING NEW INSTANCE OF SingletonA Class
2.oop.singleton.SingletonA@15db9742 | 366712642
RETURNING NEW INSTANCE OF SingletonA Class
3.oop.singleton.SingletonA@6d06d69c | 1829164700

最佳答案

如下更改

if(instance==null) {
    System.out.println("RETURNING NEW INSTANCE OF SingletonA Class");
    instance = new SingletonA();
}

关于java - 单例类每次都返回新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910658/

相关文章:

java - 如何使用 java 模拟损坏的应用程序/八位字节流

java - Java 中的这种弱单例实现是线程安全的(和 GC 安全的)吗?

java - 为什么 Java 或 Android 中的单例类需要依赖注入(inject)?

java - Hadoop jar-系统找不到指定的路径

java - 使用静态内部类创建java单例

c++ - 如何在 C++ 中实现 << 接口(interface)?

php - 如何在php类中引用数据库

php - Singleton 类出了问题,不知道是什么

javascript - Selenium-Java-geckodriver : Test Execution halts with JavaScript error as "document.getElementById(...) is null"

c++ - 从 main 访问类的 protected 成员