注解类型的限制
注解类型不能从另一个注释类型继承。每个注释类型都隐式地继承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
}
注释类型不能是通用的。