您的位置:首页 > 其它

7.5.1注解的定义与反射的调用

2011-01-29 11:40 239 查看
h4 { margin-top: 0.49cm; margin-bottom: 0.51cm; line-height: 156%; page-break-inside: avoid; }h4.western { font-family: "Arial",sans-serif; font-size: 14pt; }h4.cjk { font-family: "黑体","SimHei"; font-size: 14pt; }h4.ctl { font-family: "DejaVu Sans"; font-size: 14pt; }p { margin-bottom: 0.21cm; }a:link { color: rgb(0, 0, 255); }
注解的应用结构图
:

元注解:对注解进行注解
注解对注解类服务

注解的定义 :

注解的定义和定义接口相似
只是在interface
前面加一个@

public

@interface

ItcastAnnotaion


MyEclipse

里面生成注解

new
-- annotation

RetentionPolicy

注解的生命周期:


源代码阶段 仅仅在编译前存在
@Retention

(RetentionPolicy.

SOURCE)

class
文件阶段
仅仅在编译成。Class
文件后
,运行在内存前存在 (
默认
)@Retention

(RetentionPolicy.

CLASS)

内存中的字节码阶段 在内存中存在
即在类运行的时候存在 @Retention

(RetentionPolicy.

RUNTIME)

例子 下面是创建一个新的注解
并将生命周期设置为在内存中存在
@Retention

(RetentionPolicy.

RUNTIME

)

public

@interface

ItcastAnnotaion

{

}

注解的作用域

@Target

()

是用来定义注解的作用域的注解

参数

:

ANNOTATION_TYPE

注释类型声明

CONSTRUCTOR

构造方法声明

FIELD

字段声明(包括枚举常量)

LOCAL_VARIABLE

局部变量声明

METHOD

方法声明

PACKAGE

包声明

PARAMETER

参数声明

TYPE

类、接口(包括注释类型)或枚举声明

如果要定义为在类和方法中都能使用此注解




@Target

({ElementType.

TYPE

,ElementType.

METHOD

})

{}

代表是一个数组

TYPE

是代表
Type

接口

为什么定义为在类中能使用是用
Type

接口,而不是使用的
Class?

答:因为在
1.5

以后
开发者发现像
Interface
enum

等都和
Class

平级
需要一个东西来描述他们 所以 就开发出来了
Type

接口
类的父类继承了
Class



Class

类实现了
Type

接口

Interface
enum

也实现了
Type

接口
所以 这里的
TYPE

包括了
class
Interface enum

例子
定义一个注解 生命周期为运行期 作用域为在类中和方法中

@Retention

(RetentionPolicy.

RUNTIME

)

@Target

({ElementType.

TYPE

,ElementType.

METHOD

})

public

@interface

ItcastAnnotaion

{

}

注解的使用及处理
模拟编译器对注解进行处理


只要在类或方法里面使用了注解,在此类中就会存在一个注解所对应的注解

jdk

会判断你使用了那个注解

下面是模拟
java

编译器判断此类中是否存在某一个注解
:

注解的使用
: 直接在类或方法上面写上
@

注解名就行了

if

(AnnotaionTest.

class

.isAnnotationPresent(

ItcastAnnotaion

.

class

)){

//

得到
ItcastAnnotaion

这个注解类

ItcastAnnotaion

annotaion =
(

ItcastAnnotaion

)AnnotaionTest.

class

.getAnnotation(

ItcastAnnotaion

.

class

);

System.

out

.println(annotaion);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: