当前位置: 首页 > 面试题库 >

在Java中将枚举用作单例的最佳方法是什么?

蓟和煦
2023-03-14
问题内容

在SO问题上编写的内容基础上构建Java最佳单例实现 -即关于使用枚举创建单例-之间的区别/优点/缺点(省略构造函数)

public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}

and then calling Elvis.INSTANCE.getAge()

public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}

and then calling Elvis.getAge()


问题答案:

假设您要绑定到将使用给定对象的属性的对象-您可以非常轻松地传递Elvis.INSTANCE,但是您不能传递Elvis.class并期望它找到该属性(除非经过故意编码才能找到类的静态属性)。

基本上,仅在需要实例时才使用单例模式。如果静态方法适合您,则只需使用这些方法,而不必理会枚举。



 类似资料:
  • 具有以下定义 是否有一种方法可以正确执行比较以使用标准等式:

  • 问题内容: 我读了《有效Java》,其中指出最好使用来实现单例。 此方法在功能上等效于公共领域方法,除了它更简洁,免费提供序列化机制,甚至针对复杂的序列化或反射攻击,还提供了针对多重实例化的明确保证。尽管此方法尚未得到广泛采用,但是单元素枚举类型是实现单例的最佳方法。 尽管如此,这似乎是在动态序列化和真正的单实例上实现的折衷方案,但您却失去了经典单例的更友好的OOP方法。枚举不能被继承,只能实现一

  • 问题内容: 我正在阅读有关sqlalchemy的信息,并且看到了以下代码: 我应该在库中使用常量将“类型”设置为int吗?还是我应该使枚举成为枚举? 问题答案: SQLAlchemy从0.6开始具有Enum类型:http ://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight=enum#sqlalchemy.types.En

  • 问题内容: 假设我有一个枚举: 正如所示这个答案由lucasmo,枚举值存储在它们初始化的顺序静态数组,你可以在以后检索(的克隆)这个数组。 现在假设我要实现,使得以下所有表达式求和: 我当前的实现如下: 和类似的方法。 但是,此代码充其量似乎很麻烦(例如,“空” 循环,可能会滥用计数器变量,最坏的情况下可能是错误的(可能是反射)。 Java 7中枚举类型的最佳实现方法和方法是什么? 注意: 我不

  • 问题内容: 所以,我看着这个“枚举”类型,并且它种好像一个华而不实的 数组 / / 给我。到底有什么用? 问题答案: 枚举是一种固定数量的常量,至少可以用于两件事 不变 这比创建一堆整数常量要好得多。 创建一个单例 您可以使用枚举来做一些有趣的事情,请看这里 也请看官方文档

  • 问题内容: 使类型代表一组字符串的最佳方法是什么? 我尝试了这个: 然后如何将它们用作? 问题答案: 我不知道您想做什么,但这是我实际上翻译示例代码的方式。 另外,您可以为创建一个getter方法。 你现在可以做