【发布时间】:2012-10-06 17:50:10
【问题描述】:
有一个构造函数,带有三个枚举类型的参数:
public SomeClass(EnumType1 enum1,EnumType2 enum2, EnumType3 enum3)
{...}
枚举类型的三个参数不允许与所有可能的值组合:
例子:
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);
...
}
}
我需要在编译时运行该检查,因为在我的项目中,组合在运行时始终正确是极其重要的。
我想知道是否有可能使用用户定义的注释运行该检查?
每一个想法都值得赞赏:)
【问题讨论】:
-
这绝对是您可以并且应该使用apt 做的事情,尽管我对它不够熟悉,无法写出合格的答案。
标签: java validation enums compile-time