这会无限循环吗?

时间:2014-06-06 08:28:50

标签: java static

我是从java开始的,所以如果这听起来很愚蠢,请耐心等待。

我正在尝试以下代码:

First.java

class First {
    public static void main( String[] args ) {
        First f = new First();
        f.print();
    }

    private void print() {
        System.out.println( "Hello, World!" );
    }
}

main函数中,我重新实例化了我需要从静态main方法中调用非静态方法的相同类。

虽然这有效,但我想知道这是一个很好的方法吗?并创建了f的实例数。

如何确保fsingleton

由于

1 个答案:

答案 0 :(得分:4)

关于第一个问题:只创建了一个类First的实例。

关于第二个问题: 单例模式涉及使用私有构造函数和工厂方法。如果不使用First工厂方法,则无法创建getInstance的新实例,并且对getInstance的所有调用都将返回相同的实例。

class First {

    private static First instance = null;
    private First() {}

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

class Second {
    public static void main(String[] args) {
        First f = First.getInstance(); //Always the same instance of First.
    }
}