有一个构造函数有三个enum类型的参数:
public SomeClass(EnumType1 enum1,EnumType2 enum2, EnumType3 enum3)
{...}
Run Code Online (Sandbox Code Playgroud)
枚举类型的三个参数不允许与所有可能的值组合:
例:
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);
...
}
}
Run Code Online (Sandbox Code Playgroud)
我需要在编译时运行该检查,因为在我的项目中,组合在运行时始终是正确的,这是非常重要的.
我想知道是否有可能使用用户定义的注释运行该检查?
每个想法都赞赏:)