唯一的枚举成员值

Att*_*zki 3 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

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

kap*_*pex 6

听起来你不应该把它作为运行时检查来实现.只有控制代码的开发人员做了一些不好的改变,它才会失败.检测引入错误的更改是测试的目的.

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