Java註解類型的限制

註解類型的限制

註解類型不能從另一個註釋類型繼承。每個註釋類型都隱式地繼承java.lang.annotation.Annotation接口,其聲明如下:

package  java.lang.annotation;

public interface  Annotation  { 
   boolean equals(Object  obj); 
   int  hashCode();
   String toString();
   Class<? extends  Annotation> annotationType();
}

註解類型中的方法聲明不能指定任何參數。註解類型中的方法聲明不能有throws子句。在註解類型中聲明的方法的返回類型必須是以下類型之一:

  • 任何原始類型: byte, short, int, long, float, double, boolean, 和 char 等等
  • java.lang.String
  • java.lang.Class
  • 枚舉類型
  • 註解類型
  • 任何上述類型的數組,例如,String[], int[]等等

返回類型不能是嵌套數組。 例如,返回類型不能是String [][]int [][]的二維或多維數組。

可以使用以下方法聲明註釋,如下所示:

public  @interface MyAnnotation {
    Class element1();  // Any Class type
    Class<Test> element2();  // Only  Test   class  type
    Class<? extends  Test>  element3(); // Test   or  its  subclass type
}

註釋類型不能是通用的。