Java Annotation注解

Java注解(Annotation)

Java Annotation又称Java标注,是JDK5.0引入的一种注释机制。Java语言中的类、方法、变量、参数和包等都可以被标注。Java注解可以通过反射获取标注内容。

内置的注解

作用在代码中的注解:

  • @Override - 检查该方法是否是重载方法。如果发现其父类,或者是引用的借口中并没有该方法时,会报编译错误。
  • @Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
  • @SuppressWarnings - 指示编译器去忽略注解中声明的警告。

作用在其他注解的注解(元注解):

  • @Retention - 标识这个注解怎么保存,是在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。
  • @Documented - 标识这些注解是否包含在用户文档中。
  • @Target - 标记这个注解应该是哪种Java成员。
  • @Inherited - 标记这个注解将具有继承性。例如,父类标注的这个注解,则其子类也默认会标注这个注解(默认:注解并没有继承于任何子类)

从Java 7开始,额外添加了3个注解:

  • @SafeVarargs - Java 7开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
  • @FunctionalInterface - Java8开始支持,标识一个匿名函数或函数式接口。
  • @Repeatable - Java 8开始支持,标识某注解可以在同一个声明上使用多次。

Annotation架构

Annotation架构

  1. 1个Annotation和一个RetentionPolicy关联,和1至多个ElementType关联。
  2. Annotation就是个接口,有许多实现类,包括:Deprecated,Documented,Inherited,Override等等。每一个实现类,都和一个RetentionPolicy关联,并且和一至多个ElementType关联。
  3. ElementType是Enum枚举类型,它用来指定Annotation的类型。
  4. RetentionPolicy是Enum枚举类型,它用来指定Annotation的策略,不同RetentionPolicy类型的Annotation的作用域不同。

java自带的 Annotation

  1. Annotation通用定义
    @Documented
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MyAnnotation1 {
    }
    
    • @interface:
      使用@interface定义注解时,意味着它实现了java.lang.annotation.Annotation接口,即该注解就是一个Annotation。定义Annotation时,@interface是必须的。Annotation接口的实现细节都由编译器完成。通过@interface定义注解后,该注解不能继承其他的注解或接口。
    • @Documented:
      类和方法的Annotation在缺省情况下是不出现在javadoc中的。如果使用@Documented修饰该Anootation,则表示它可以出现在javadoc中。该注解可有可无。
    • @Target(ElementType.TYPE)
      指定Annota类型属性。该注解可有可无,若没有@Target,则该Annotation可以用于任何地方。
    • @Retention(RetentionPolicy.RUNTIME)
      指定Annotation的策略属性。默认是RetentionPolicy.CLASS。

Annotation的作用

Annotation是一个辅助类,它在Junit、Struts、Spring等工具框架中被广泛使用。在编程中经常会使用到的Annotation作用有:

  1. 编译检查
    Annotation具有让编译器进行编译检查的作用,例如@SuppressWarnings,@Deprecated,@Override都具有编译检查作用。
  2. 在反射中使用Annotation
    在反射的Class,Method,Field等函数中,有许多与Annotation相关的接口。
    这意味着,我们可以在反射中解析并使用Annotation。
  3. 根据Annotation生成帮助文档
    通过给Annotation注解加上@Documented标签,能使该Annotation标签出现在javadoc中。
  4. 能够帮忙查看代码
  5. 可以通过自定义Annotation来实现一些功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值