Java注解

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修饰的注解

你可能感兴趣的:(Java注解)