Java注解中定义枚举

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

后来看了这篇博客:

深入理解Java注解(@Annotation) 

里面有这么一个例子,才发现自己写错了:

@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

  • 上述类型的数组

原文地址:https://www.cnblogs.com/woyujiezhen/p/13553955.html