本文主要写了预置注解的类型和代表的意义。
Java预置注解类型(predefined annotation types)
1.注解的注解,用来注解注解的注解,且只能用来注解注解
@Inherited 所标注的Annotation具有继承性,表示父类的注解可被子类继承
@Retention 指定Annotation的存储级别(RetentionPolicy)属性
@Repeatable 可多次使用的注解
Annotation的存储级别(RetentionPolicy)有三个:源码级(SOURCE ),字节码级(SOURCE ),JVM运行级(RUNTIME)
- RetentionPolicy.SOURCE 此级别注解只存在于源码中,会被编译器忽略,如@Override, @SuppressWarnings。
- RetentionPolicy.CLASS 此级别注解会被保存到class文件中,运行时会被JVM忽略。
- RetentionPolicy.RUNTIME 此级别会被保存到class文件,运行时也可以识别,所以可以使用反射机制获取注解信息。比如@Deprecated。
- @Target 用来指定Annotation的可标记类型(ElementType)属性。
ElementType 共有八个类型
- ElementType.ANNOTATION_TYPE 只可以标记注解类型
- ElementType.CONSTRUCTOR 标记构造函数
- ElementType.FIELD 标记字段或属性
- ElementType.LOCAL_VARIABLE 标记本地变量
- ElementType.METHOD 标注方法
- ElementType.PACKAGE 标注包
- ElementType.PARAMETER 标记方法的变量
- ElementType.TYPE 标记类中的任何元素
2.其他常用的预置注解
- @Deprecated 所标注内容,不再被建议使用,即将废弃。
- @Override 只能标注方法,表示该方法覆盖父类中的方法。
- @SuppressWarnings -- @SuppressWarnings 所标注内容产生的警告,编译器会对这些警告保持静默。
- @Documented 所标注内容,可以出现在javadoc中。
3.不常用的
- @FunctionalInterfaceSAM接口,即Single Abstract Method interfaces,用于编译级错误检查。
- @SafeVarargs 注解断言在方法的实现中会正确地处理可变参数形式的形式参数。
参考:java官方文档 https://docs.oracle.com/javase/tutorial/java/annotations/predefined.html
私有原文地址:https://gitee.com/dianhua1990627/springboot/blob/master/doc/annotation.md