有一个带有三个枚举类型参数的构造函数:
public SomeClass(EnumType1 enum1,EnumType2 enum2, EnumType3 enum3)
{...}
enum 类型的三个参数不允许与所有可能的值组合:
例子:
EnumType1.VALUE_ONE、EnumType2.VALUE_SIX、EnumType3.VALUE_TWENTY 是有效组合。
但以下组合无效:
EnumType1.VALUE_TWO、EnumType2.VALUE_SIX、EnumType3.VALUE_FIFTEEN
每个 EnumTypes 都知道它可以与哪些值组合:
EnumType1 和另外两个实现 isAllowedWith() 方法来检查如下:
public enum EnumType1 {
VALUE_ONE,VALUE_TWO,...;
public boolean isAllowedWith(final EnumType2 type) {
switch (this) {
case VALUE_ONE:
return type.equals(Type.VALUE_THREE);
case VALUE_TWO:
return true;
case VALUE_THREE:
return type.equals(Type.VALUE_EIGHT);
...
}
}
我需要在编译时运行该检查,因为在我的项目中,组合在运行时始终正确是极其重要的。
我想知道是否有可能使用用户定义的注释运行该检查?
每个想法都值得赞赏:)