Java注解Annotation

朴灿烈づ我的快乐病毒、 2022-06-03 05:56 335阅读 0赞

什么是注解?

从 JDK5.0 开始,Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)。Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation,程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.。Annotation 可以像修饰符一样被使用, 可用于修饰包,类, 构造器, 方法, 成员变量, 参数, 局部变量的声明, 这些信息被保存在Annotation的 “name=value”对中。

JDK内置的基本注解类型

①@Override:限定重写父类方法, 该注释只能用于方法

②@Deprecated:用于表示某个程序元素(类, 方法等)已过时

③@SuppressWarnings: 抑制编译器警告

自定义Annotation

定义新的 Annotation类型使用 @interface 关键字

Annotation 的 成员变量 在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型 .

可以在定义 Annotation的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字

  1. public @interface MyAnnotation{
  2. String name() default xxx";
  3. }

没有成员定义的 Annotation称为标记; 包含成员变量的Annotation称为元数据Annotation

如何使用

  1. @MyAnnotation(name="aa")
  2. public class Person {
  3. @MyAnnotation(name="bb")
  4. private String name;
  5. @MyAnnotation
  6. public void show(){
  7. }
  8. }

JDK的元Annotation

JDK 的元 Annotation用于修饰其他Annotation定义

JDK5.0提供了专门在注解上的注解类型,分别是: Retention, Target, Documented, Inherited

@Retention: 只能用于修饰一个Annotation定义, 用于指定该Annotation可以保留多长时间, @Rentention 包含一个 RetentionPolicy 类型的成员变量, 使用 @Rentention 时必须为该value成员变量指定值:

RetentionPolicy.SOURCE : 编译器直接丢弃这种策略的注释

RetentionPolicy.CLASS: 编译器将把注释记录在class文件中. 当运行 Java 程序时, JVM不会保留注解。 这是默认值

RetentionPolicy.RUNTIME:编译器将把注释记录在class 文件中.当运行Java 程序时,JVM 会保留注释.程序可以通过反射获取该注释

@Target: 用于修饰 Annotation定义, 用于指定被修饰的Annotation能用于修饰哪些程序元素.@Target 也包含一个名为value的成员变量.

@Documented: 用于指定被该元Annotation修饰的 Annotation类将被 javadoc 工具提取成文档. 定义为Documented的注解必须设置Retention值为RUNTIME。

@Inherited: 被它修饰的Annotation将具有继承性.如果某个类使用了被@Inherited修饰的 Annotation,则其子类将自动具有该注解

看一下@SuppressWarnings的源码

  1. @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
  2. @Retention(RetentionPolicy.SOURCE)
  3. public @interface SuppressWarnings {
  4. String[] value();
  5. }

其中 @Target :指定了可以修饰的程序元素,@Retention指定其保留时间

发表评论

表情:
评论列表 (有 0 条评论,335人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java-注解-Annotation

    注解作用   注解其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用 Annotation, 程序开发人员可以在不改变原有逻辑的

    相关 Java注解(Annotation)

    一、什么是注解        注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernat

    相关 Java Annotation 注解

    首先什么是注解? 最常见的是,在我们使用Eclipse等工具编写java代码的时候,有时候会出现一些比如@Deprecated,@Override,@SuppressWarn

    相关 java 注解Annotation

    注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记。 以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何

    相关 Java——注解Annotation

    1. 简介 官方解释:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。 注解的定义: