java注解

发布时间:2017-11-29 10:30:15   来源:文档文库   
字号:

主要内容

1. JDK内置的基本注解类型(3个)

2. 自定义注解类型

3. 对注解进行注解(4个)

4. 利用反射获取注解信息(在反射部分涉及)

1. 概述

JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)

Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.

Annotation 可以像修饰符一样被使用, 可用于修饰包,, 构造器, 方法, 成员变量, 参数, 局部变量的声明, 这些信息被保存在 Annotation name=value 对中.

Annotation 能被用来为程序元素(, 方法, 成员变量等) 设置元数据

2. 基本的注解

使用 Annotation 时要在其前面增加 @ 符号, 把该 Annotation 当成一个修饰符使用。用于修饰它支持的程序元素

三个基本的 Annotation:

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

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

c) @SuppressWarnings: 抑制编译器警告

3. 自定义注解

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

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

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

a) public @interface MyAnnotation{

String name() default “bdqn";

}

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

4. 提取Annotation信息

JDK 5.0 java.lang.reflect 包下新增了 AnnotatedElement 接口, 该接口代表程序中可以接受注解的程序元素

当一个 Annotation 类型被定义为运行时 Annotation , 该注释才是运行时可见, class 文件被载入时保存在 class 文件中的 Annotation 才会被虚拟机读取

程序可以调用 AnnotationElement 对象的如下方法来访问 Annotation 信息

5. 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, 则其子类将自动具有该注解

实际应用中,使用较少

6. 练习

1.编写一个Person类,使用Override注解它的toString方法

2.自定义一个名为“MyTiger”的注解类型,它只可以使用在方法上,带一个String类型的value属性,然后在第1题中的Person类上正确使用。

本文来源:https://www.2haoxitong.net/k/doc/9da38545cbaedd3383c4bb4cf7ec4afe04a1b11d.html

《java注解.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式