Java 静态实例变量引用类的实例
我可以让类的静态字段保留对自身实例的引用吗?如果是这样,它是否会在jvm中保持活动状态,而没有其他人保留引用Java 静态实例变量引用类的实例,java,reference,Java,Reference,我可以让类的静态字段保留对自身实例的引用吗?如果是这样,它是否会在jvm中保持活动状态,而没有其他人保留引用 public class StatTest { private static StatTest statTest; public static StatTest getStatTest () { if (statTest== null) { statTest= new StatTest (); statTe
public class StatTest {
private static StatTest statTest;
public static StatTest getStatTest () {
if (statTest== null) {
statTest= new StatTest ();
statTest.init();
}
return statTest;
}
private StatTest() { }
}
这是创建类的单例的一种方法 所以要回答你的问题:
- 是的,这是可能的
- 对
方法的所有引用都将返回该实例getStatTest()
当对单例使用此方法时,该方法通常被称为
getInstance()
=)恭喜。你重新创造了单身汉 是的,这就是设计模式的概念
它会在jvm中保持活动状态而没有其他人保留引用吗
public class StatTest {
private static StatTest statTest;
public static StatTest getStatTest () {
if (statTest== null) {
statTest= new StatTest ();
statTest.init();
}
return statTest;
}
private StatTest() { }
}
是的,只要类本身不符合垃圾收集的条件(只有在使用自定义类加载器时才会发生垃圾收集)。这是实现单例模式的一种方法。请注意,这不是线程安全的(即,如果从多个线程调用
StatTest.getStatTest()
,则可能会出现问题)。要比较不同的单例实现(包括一些线程安全的实现),请检查,这是我不久前写的一个答案。感谢您提供的所有答案!我现在意识到这是一个非常有名的模式。我以前就知道辛格尔顿这个名字,但我从来没有读过。现在很容易找到关于如何进行的信息。非常感谢!