Java annotation注解类型

本文主要写了预置注解的类型和代表的意义。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。