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
}

注釋型別不能是通用的。