java - 在 getInstance() 方法或实例变量定义中初始化单例之间是否存在功能差异

标签 java android singleton

这两种实现单例的方式在功能上有什么区别吗?

public class MySingleton {
    private static MySingleton instance;

    public static MySingleton getInstance() {
        if (instance == null) {
            instance = new MySingleton();
        }
        return instance;
    }
}


public class MySingleton {
    private static final MySingleton instance = new MySingleton();

    public static MySingleton getInstance() {
        return instance;
    }
}

除此之外,第一种方式允许某种 clearInstance() 方法。尽管您可以在第二种方法中使实例不是最终的。

第一种方法在技术上是否表现更好,因为它只在第一次需要时而不是在程序启动时初始化?

最佳答案

第一个是延迟加载,第二个是预加载。也许您的应用程序永远不会调用单例,因此如果创建单例的新实例是消耗大量资源的操作,那么延迟加载会更好,因为它会在需要时创建新实例。

关于java - 在 getInstance() 方法或实例变量定义中初始化单例之间是否存在功能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53242220/

相关文章:

java - 什么时候使用不可实例化的类而不是枚举?

iOS AppDelegate 作为单例无法返回相同的实例

java - 反序列化具有键变量 jackson map ObjectMapper 的 JSON 文件

Java EE 过滤器无法获取 cookie?

android - 使用游标避免 ANR

android - 当我从垂直 View 更改为水平 View 时,为什么我的歌曲会重新开始播放?

iOS swift : Calling a singleton method 3 times causes app to crash

java - 从对象列表中获取属性的聚合列表(Java 8)

Java new String 和 new StringBuilder 在堆中的行为

android - 如何使 SearchView 始终在 android 中展开?