我测试了单例模式的实现,觉得无法弄清楚IntelliJ为什么向我抛出错误。这是代码。

public class CowSingleton {
    private static CowSingleton unique;
    private CowSingleton(){}

    //Only create new object if NOT already instantiated.

    public static CowSingleton getInstance(){
        if (unique == null){
            //creating unique object
            unique = new CowSingleton();
            System.out.println(unique);
        }
        //return Object
        return unique;
    }

    public String cowMoo(String str)
    {
       return str;
    }
}


这是我怎么称呼它:

CowSingleton cowSingleton = new CowSingleton.getInstance();
System.out.println(cowSingleton.cowMoo("Moooooo"));


我得到的错误:

"java: /Users/gpendleton/Personal/MyAnimals/src/Main.java:25: cannot find symbol
symbol  : class getInstance
location: class CowSingleton"

最佳答案

您不是自己创建实例;而是您自己创建实例。您将推迟使用singleton类本身来为您创建它。您的调用getInstance()的代码不需要new关键字。毕竟,您正在调用静态方法,而不是自己创建对象。

删除new关键字。

CowSingleton cowSingleton = CowSingleton.getInstance();

关于java - 我实现单例模式时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21587066/

10-10 12:32