我的问题:我想在两个枚举之间指定一对一的连接.基本上:
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()
调用轻松绕过它.
听起来你不应该把它作为运行时检查来实现.只有控制代码的开发人员做了一些不好的改变,它才会失败.检测引入错误的更改是测试的目的.
写一个简单的测试,检查一切是否正确.其他答案已经提供了一些很好的解决方案来检查重复的枚举.而不是运行应用程序以查看枚举初始化是否失败,而是运行测试(我希望您已经编写并运行测试).