@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
 @Retention(value=RUNTIME)
 @Documented
 @Constraint(validatedBy=EnumElement.EnumElementValidator.class)
 @Published
public @interface EnumElement
nullまたは空文字列の場合は、validと判定する。value()で指定された列挙型定数を比較し、一致するものが存在すれば検証成功と判定される。
 比較ロジックは以下の通りとなる。
 EnumElement.WithValueを実装していない場合、入力値と列挙型定数の名前(Enum.name()で取得した値)を比較する。
         入力値はStringに制限される(それ以外の場合、実行時エラーが発生する)。
         デフォルトでは、比較時に入力値及び列挙型定数の大文字小文字は区別しない。
         区別する場合はcaseSensitive()をtrueに設定する(デフォルト:false)。
     EnumElement.WithValueを実装している場合、入力値とEnumElement.WithValue.getValue()が返却する値を比較する。
         入力値はStringもしくはNumberに制限される(それ以外の場合、実行時エラーが発生する)。
         この場合、caseSensitive()を指定しても無視される。
     
EnumElement.WithValue.getValue()を実装した列挙型を使用する場合の例を以下に示す。
 
 public class SampleBean {
      @EnumElement(SampleEnum.class)
     String sampleString;
 }
 public enum SampleEnum implements EnumElement.WithValue <String> {
     ON("1"), OFF("0");
     private final String value;
     SampleEnum(String value) {
         this.value = value;
     }
      @Override
     public String getValue() {
         return value;
     }
 }
 | Modifier and Type | Required Element and Description | 
|---|---|
java.lang.Class<? extends java.lang.Enum<?>> | 
value
許容する値を含む列挙型 
 | 
| Modifier and Type | Optional Element and Description | 
|---|---|
boolean | 
caseSensitive
大文字小文字を区別するか否か( 
true: 区別しない) | 
java.lang.Class<?>[] | 
groups
グループ 
 | 
java.lang.String | 
message
メッセージ 
 | 
java.lang.Class<? extends javax.validation.Payload>[] | 
payload
payload 
 |