Java注解(一)知识梳理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010289802/article/details/81362906

简介

从JDK 5开始, Java增加了注解, 注解是代码里的特殊标记, 这些标记可以在编译、 类加载、 运行时被读取, 并执行相应的处理。 通过使用注解, 开发人员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充的信息。 代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、 处理或者进行部署

分类

注解分为标准注解和元注解

(一).标准注解

标准注解有以下4种。

  1. @Override: 对覆盖超类中的方法进行标记, 如果被标记的方法并没有实际覆盖超类中的方法, 则编译器会发出错误警告。
  2. @Deprecated: 对不鼓励使用或者已过时的方法添加注解, 当编程人员使用这些方法时, 将会在编译时显示提示信息。
  3. @SuppressWarnings: 选择性地取消特定代码段中的警告。
  4. @SafeVarargs: JDK 7新增, 用来声明使用了可变长度参数的方法, 其在与泛型类一起使用时不会出现类型安全问题。

(二).元注解

除了标准注解, 还有元注解, 它用来注解其他注解从而创建新的注解。 元注解有以下几种。

  1. @Target: 注解所修饰的对象范围。
  2. @Inherited: 表示注解可以被继承。
  3. @Documented: 表示这个注解应该被 JavaDoc 工具记录。
  4. @Retention: 用来声明注解的保留策略。
  5. @Repeatable: JDK 8 新增, 允许一个注解在同一声明类型(类、 属性或方法) 上多次使用。

其中 @Target 注解取值是一个 ElementType 类型的数组, 其中有以下几种取值, 对应不同的对象范围。

  •  ElementType.TYPE: 能修饰类、 接口或枚举类型。
  •  ElementType.FIELD: 能修饰成员变量。
  •  ElementType.METHOD: 能修饰方法。
  •  ElementType.PARAMETER: 能修饰参数。
  •  ElementType.CONSTRUCTOR: 能修饰构造方法。
  •  ElementType.LOCAL_VARIABLE: 能修饰局部变量。
  •  ElementType.ANNOTATION_TYPE: 能修饰注解。
  •  ElementType.PACKAGE: 能修饰包。
  •  ElementType.TYPE_PARAMETER: 类型参数声明。
  •  ElementType.TYPE_USE: 使用类型。

其中 @Retention 注解有3种类型, 分别表示不同级别的保留策略。

  1.  RetentionPolicy.SOURCE: 源码级注解。 注解信息只会保留在.java源码中, 源码在编译后, 注解信息被丢弃, 不会保留在.class中。
  2.  RetentionPolicy.CLASS: 编译时注解。 注解信息会保留在.java 源码以及.class 中。 当运行Java程序时,JVM会丢弃该注解信息, 不会保留在JVM中。
  3.  RetentionPolicy.RUNTIME: 运行时注解。 当运行Java程序时, JVM也会保留该注解信息, 可以通过反射获取该注解信息。

定义注解

注解的使用就不说了,大家都用过,我们看看如何定义注解:

1.基本定义

定义新的注解类型使用@interface关键字, 这与定义一个接口很像, 如下所示:

public @interface Test{
    ...
}

定义完注解后, 就可以在程序中使用该注解:

@Test
public void AnnotationTest{
    ...
}

2.定义成员变量

注解只有成员变量, 没有方法。 注解的成员变量在注解定义中以“无形参的方法”形式来声明, 其“方法名”定义了该成员变量的名字, 其返回值定义了该成员变量的类型:

3.定义运行时注解

4.定义编译时注解


 

猜你喜欢

转载自blog.csdn.net/u010289802/article/details/81362906
今日推荐