如何通过单例只保证一个类的一个实例

时间:2015-03-08 13:35:14

标签: java singleton

我刚刚了解了单身人士的使用情况,并且我正在努力研究如何将对象实例化限制为只使用单例。

我在教程网站上找到了以下示例:

public class Singleton {

private static Singleton singleton = new Singleton( );

private Singleton(){ }

public static Singleton getInstance( ) {
  return singleton;
   }

但是每当我调用getInstance()方法时,肯定会创建一个新对象吗?

我将尝试应用该方法来创建一个包含hashMap的类,并在其中的实例化商店中存储5个对象,因此我需要了解一个单例的原理如何?在我可以应用之前,它可以防止倍数。

3 个答案:

答案 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节。