Java 注解

自定义注解

@interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类

元注解

  • @Target:定义了修饰的类型
  • @Retention:定义了注解的声明周期
  • @Documented:是一个标记注解,没有成员,被修饰的注解会生成到javadoc
  • @Inherited:子类Class对象可以使用getAnnotations()获取父类被@Inherited修饰的注解
public enum ElementType {
    TYPE                类 / 接口 / enum
    FIELD               字段
    METHOD              方法
    PARAMETER           参数
    CONSTRUCTOR         构造函数
    LOCAL_VARIABLE      局部变量
    ANNOTATION_TYPE     注解声明(应用于另一个注解上)
    PACKAGE             包
    TYPE_PARAMETER      类型参数
    TYPE_USE            类型使用
}

public enum RetentionPolicy {
   SOURCE  源文件保留,编译时期丢弃
   CLASS   编译时保留,class文件中有效
   RUNTIME   运行时保留
}

内置注解

  • Override:重载,此方法覆盖了父类的方法
  • Deprecated:弃用,已经过时的方法或类
  • SuppressWarnings:抑制警告,告诉Java编译器关闭对类、方法及成员变量的警告

注解参数

  • 只能用public或默认(default)这两个访问权修饰
  • 如果只有一个参数成员,最好把参数名称设为"value",后加小括号
  • 注解参数成员支持的数据类型:
    • 所有基本数据类型(int,float,boolean,byte,double,char,long,short)
    • String类型
    • Class类型
    • enum类型
    • Annotation类型
    • 以上所有类型的数组

getAnnotations() 和 getDeclaredAnnotations() 区别

  • getAnnotations():返回此元素上存在的所有注解的数组,包括从父类继承的
  • getDeclaredAnnotations():返回直接存在于此元素上的所有注解的数组,不包括父类的注解

注解不能被继承

  • 类不从它所实现的接口继承annotation
  • 方法不从它所重载的方法继承annotation

参考文章
深入浅出Java Annotation(元注解和自定义注解)
深入理解 Java 注解类型 (@Annotation)

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