我刚刚了解了单身人士的使用情况,并且我正在努力研究如何将对象实例化限制为只使用单例。
我在教程网站上找到了以下示例:
public class Singleton {
private static Singleton singleton = new Singleton( );
private Singleton(){ }
public static Singleton getInstance( ) {
return singleton;
}
但是每当我调用getInstance()方法时,肯定会创建一个新对象吗?
我将尝试应用该方法来创建一个包含hashMap的类,并在其中的实例化商店中存储5个对象,因此我需要了解一个单例的原理如何?在我可以应用之前,它可以防止倍数。
答案 0 :(得分:2)
注意,持有Singleton
实例的引用是静态类成员。
private static Singleton singleton = new Singleton();
因此,虽然new Singleton()
可能看起来像每次创建一个新实例,但不因为 static 成员已初始化 只在加载课程时。
getInstance()
静态方法然后在应用程序的整个生命周期中不断返回相同的引用,因此返回相同的Singleton
对象。
答案 1 :(得分:1)
它将是应用程序的相同实例。 JVM将在程序开始时创建实例,并且永远不会销毁它。
答案 2 :(得分:0)
本声明
private static Singleton singleton = new Singleton( );
当“第一次引用”类时,被有效地执行 - 即,第一次调用getInstance
。所以它只会被执行一次。
请参阅Java Language Specification,第12.4.1节。