1 JDK1.5中内部提供的注解
(1)@Deprecated
(2)@Override
(3)@SuppressWarnings
2 元注解
(1)@Target:用于约束注解可以应用到哪些地方。
这个注解可以接收一个ElementType类型的数组。
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}
1.PACKAGE:标明注解可以用于包声明;
2.CONSTRUCTOR:标明注解可以用于构造函数声明;
3.PARAMETER:标明该注解可以用于参数声明;
4.METHOD:标明该注解可以用于方法声明;
5.FIELD:标明该注解可以用于字段(域)声明,包括enum实例;
6.TYPE:标明该注解可以用于类、接口(包括注解类型)或enum声明;
7.LOCAL_VARIABLE:标明注解可以用于局部变量声明;
8.ANNOTATION_TYPE:标明注解可以用于注解声明(应用于另一个注解上);
9.TYPE_PARAMETER:标明注解可以用于类型参数声明(1.8新加入);
10.TYPE_USE:类型使用声明(1.8新加入);
(2)@Retention:用于控制注解的生命周期。
public enum RetentionPolicy {
// 注解会被编译器丢弃
SOURCE,
// 注解会被编译器记录到class文件中,在虚拟机运行时不会被保留
// CLASS是默认值
CLASS,
// 注解会被编译器记录到class文件中,在虚拟机运行时会被保留,所以可以通过反射读取注解的信息
RUNTIME
}
(3)@Documented:将修饰的注解记录到javadoc中。
(4)@Inherited:使注解具有继承性,允许子类集成父类的注解
允许子类继承父类的注解,即它所标注的Annotation将具有继承性,通过使用@Inherited,可以让子类Class对象使用getAnnotations()获取父类被@Inherited修饰的注解
网友评论