我的问题:我想指定两个枚举之间的一对一连接。基本上:
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/