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

  • 上述類型的數組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM