直接在注解中定义以存在的枚举类比较简单,但如果想直接在注解中定义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
-
上述类型的数组