public class SomeClass {
private static final SomeClass INSTANCE = new SomeClass();
private SomeClass() {}
public static SomeClass getInstance() {return INSTANCE;}
public static void main(String[] args) {
System.out.println(getInstance());
}
}
为什么 getInstance
方法每次总是返回相同的引用?
最佳答案
原因是字段INSTANCE
既是static
又是final
。
static
表示它的范围绑定(bind)到封闭类,而不是该类的任何单个实例。 (即使您无论如何都没有创建它的任何实例。)在一个正在运行的 Java 程序中,每个类只有一个,即使一个类可能有许多实例 .
final
表示该字段的值在初始化后不能更改。
因为它是static
,对象只有一个“槽”,而且因为它是final
,这个槽的内容永远不会改变,这就是返回这些内容的原因将始终返回相同的东西。
关于java - 为什么这个方法调用每次调用都返回相同的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899959/