参考资料:https://docs.oracle.com/javase/8/docs/api/
Java内部原生注解,共有 11 个,java.lang中有5个、java.lang.annotation 中有6个。
①java.lang中5个:作用在代码的注解
@Deprecated:标记已过时方法。如果使用该方法,会报编译警告
@FunctionalInterface(java8新增):标记在接口上,表示该接口为:函数式接口。指仅仅只包含一个抽象方法的接口,例如Runnable
@Override:标注该方法是重写方法
@SafeVarargs(java7新增):只能用于标记构造函数和方法,作用和@SuppressWarnings(“unchecked”)差不多,抑制未检查检查警告。
@SuppressWarnings:指示编译器忽略注解中声明的警告
②java.lang.annotation 中有6个:作用在其他注解的注解
@Documented:只是用来做标识,没什么实际作用。自定义注解的时候可以使用@Documented来进行标注,如果使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来
@Inherited:注解继承:一个被@Inherited注解了的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解
@Native(java8新增):未知具体用法
@Repeatable(java8新增):标识一个注解可以在同一个声明上使用多次,每次又可以代表不同的含义
@Retention:标识注解的存在阶段。
分为三个阶段:①RetentionPolicy.SOURCE:注解仅存在于源码中
②RetentionPolicy.CLASS:默认的存在阶段,注解会在class字节码文件中存在,但运行时无法获得
③RetentionPolicy.RUNTIME:注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target:标记这个注解应该是哪种 Java 成员、作用的范围。具体的值参照:ElementType
TYPE, 类、接口(包括注释类型)或枚举声明
FIELD, 字段声明(包括枚举常量)
METHOD, 方法声明
PARAMETER, 参数声明
CONSTRUCTOR, 构造方法声明
LOCAL_VARIABLE, 局部变量声明
ANNOTATION_TYPE, 注释类型声明
PACKAGE 包声明