Java注解类型的限制

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
}

注释类型不能是通用的。