java - 为什么这个方法调用每次调用都返回相同的引用?

标签 java methods singleton

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/

相关文章:

ios - UILabel 方法不会返回

javascript - 如何将 ES6 类方法分配给函数?

language-agnostic - 传入应该知道的参数不就隐式违反了封装吗?

java - 最大化 JMenuBar 中的 JInternalFrame

java - 我正在使用适用于 Android 的 OData4j,我无法获取实体

Java GUI 调出上一个窗口

java:方法的错误时间,没有返回它应该返回的内容。

java - 这是合适的定制同步器吗?

android - Android 会在 Activity 之前为 Singleton 释放内存吗?

iphone - 我的单例走在正确的轨道上吗?