直接在注解中定義以存在的枚舉類比較簡單,但如果想直接在注解中定義enum呢?
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface A { enum aa {A, B}; aa bb(); }
這樣子,使用的話IDEA也會有提示了,之前我一直以為是這個樣子就可以的,結果半天沒搞定,想不通
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface A { enum aa {A, B}; }
后來看了這篇博客:
里面有這么一個例子,才發現自己寫錯了:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @interface Reference{ boolean next() default false; }public @interface AnnotationElementDemo { enum Status {FIXED,NORMAL}; Status status() default Status.FIXED; boolean showSupport() default false; String name()default ""; Class<?> testCase() default Void.class; Reference reference() default @Reference(next=true); long[] value(); }
上方的博客中也說明了注解支持的類型定義:
-
所有基本類型(int,float,boolean,byte,double,char,long,short)
-
String
-
Class
-
enum
-
Annotation
-
上述類型的數組