java - 唯一的枚举成员值

标签 java enums

我的问题:我想指定两个枚举之间的一对一连接。基本上:

enum MyEnum{

    ENUM_VALUE_1,
    ENUM_VALUE_2,
    ENUM_VALUE_3,

}

enum MyOtherEnum{

    OTHER_ENUM_VALUE_1(MyEnum.ENUM_VALUE_3),
    OTHER_ENUM_VALUE_2(MyEnum.ENUM_VALUE_1),
    OTHER_ENUM_VALUE_3,
    OTHER_ENUM_VALUE_4(MyEnum.ENUM_VALUE_2),

    private MyEnum pair;

    MyOtherEnum(MyEnum pair){
        this.pair=pair;
    }

}

鉴于此代码,确保 MyOtherEnum 的两个实例不具有相同的 MyEnum 对的最佳方法是什么?我想出了一些解决方案,但似乎都不好。一种解决方案是在构造函数中抛出异常,但我不确定这是否可行。另一种解决方案是特殊的 getter 方法,但可以通过简单的 MyOtherEnum.values() 调用轻松绕过。

最佳答案

听起来您不应该将此作为运行时检查来实现。如果控制代码的开发人员做了一些错误的更改,它只会失败。检测引入错误的更改是测试的目的。

编写一个简单的测试来检查一切是否正确。其他答案已经提供了一些很好的解决方案来检查重复的枚举。不要运行应用程序来查看枚举初始化是否失败,而是运行测试(我希望你已经编写并运行了测试)。

关于java - 唯一的枚举成员值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831903/

相关文章:

java - 在 RequestMapping 问题中使用 @PathVariable 的 Controller 的特定 url

java - 条码扫描仪 (ZXing) 崩溃

java - 无法模拟@Autowired 对象

Delphi:如何拥有非连续子范围枚举类型?

python - 在 python 中将二进制转换为枚举以进行 Redis 转换

javascript - 检查枚举中定义的项目

Java heapdump分析找到实例化对象的来源

java - Java中的实时绘图

matlab - 如何在 MATLAB 中获取枚举的名称

c# - 如何对 Enum 执行 LINQ 查询?