分享
 
 
 

学习教程:Java Annotation 高级应用

王朝java/jsp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

前言:

前不久在matrix上先后发表了《java annotation 入门》、《java annotation 手册》两篇文章,比较全面的对java annotation的语法、原理、使用三方面进行了阐述。由于《入门》中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文《java annotation高级应用》,具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。

一、摘要:

《java annotation高级应用》具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。本文列举了用于演示annotation的BRFW演示框架、演示APT的apt代码实例,并对其进行较为深度的分析,希望大家多多提意见。

二、annotation实例分析

1.BRFW(Beaninfo Runtime FrameWork)定义:

本人编写的一个annotation功能演示框架。顾名思义,BRFW就是在运行时取得bean信息的框架。

2.BRFW的功能:

A.源代码级annotation:在bean的源代码中使用annotation定义bean的信息;

B.运行时获取bean数据:在运行时分析bean class中的annotation,并将当前bean class中field信息取出,功能类似xdoclet;

C.运行时bean数据的xml绑定:将获得的bean数据构造为xml文件格式展现。熟悉j2ee的朋友知道,这个功能类似jaxb.

3.BRFW框架:

BRFW主要包含以下几个类:

A.Persistent类:定义了用于修饰类的固有类型成员变量的annotation.

B.Exportable类:定义了用于修饰Class的类型的annotation.

C.ExportToXml类:核心类,用于完成BRFW的主要功能:将具有Exportable Annotation的bean对象转换为xml格式文本。

D.AddressForTest类:被A和B修饰过的用于测试目的的地址bean类。其中包含了地址定义所必需的信息:国家、省级、城市、街道、门牌等。

E.AddressListForTest类:被A和B修饰过的友人通讯录bean类。其中包含了通讯录所必备的信息:友人姓名、年龄、电话、住址(成员为AddressForTest类型的ArrayList)、备注。需要说明的是电话这个bean成员变量是由字符串类型组成的ArrayList类型。由于朋友的住址可能不唯一,故这里的住址为由AddressForTest类型组成的ArrayList.

从上面的列表中,可以发现A、B用于修饰bean类和其类成员;C主要用于取出bean类的数据并将其作xml绑定,代码中使用了E作为测试类;E中可能包含着多个D.

在了解了这个简单框架后,我们来看一下BRFW的代码吧!

4.BRFW源代码分析:

A.Persistent类:

清单1:

package com.bjinfotech.practice.annotation.runtimeframework;

import java.lang.annotation.*;

/**

* 用于修饰类的固有类型成员变量的annotation

* @author cleverpig

*

*/

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.FIELD)

public @interface Persistent {

String value() default "";

}

B.Exportable类:

清单2:

package com.bjinfotech.practice.annotation.runtimeframework;

import java.lang.annotation.*;

/**

* 用于修饰类的类型的annotation

* @author cleverpig

*

*/

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.TYPE)

public @interface Exportable {

//名称

String name() default "";

//描述

String description() default "";

//省略name和description后,用来保存name值

String value() default "";

}

C.AddressForTest类:

清单3:

package com.bjinfotech.practice.annotation.runtimeframework;

/**

* 用于测试的地址类

* @author cleverpig

*

*/

@Exportable("address")

public class AddressForTest {

//国家

@Persistent

private String country=null;

//省级

@Persistent

private String province=null;

//城市

@Persistent

private String city=null;

//街道

@Persistent

private String street=null;

//门牌

@Persistent

private String doorplate=null;

public AddressForTest(String country,String province,

String city,String street,String doorplate){

this.country=country;

this.province=province;

this.city=city;

this.street=street;

this.doorplate=doorplate;

}

}

D.AddressListForTest类:

清单4:

package com.bjinfotech.practice.annotation.runtimeframework;

import java.util.*;

/**

* 友人通讯录

* 包含:姓名、年龄、电话、住址(多个)、备注

* @author cleverpig

*

*/

@Exportable(name="addresslist",description="address list")

public class AddressListForTest {

//友人姓名

@Persistent

private String friendName=null;

//友人年龄

@Persistent

private int age=0;

//友人电话

@Persistent

private ArrayList telephone=null;

//友人住址:家庭、单位

@Persistent

private ArrayList AddressForText=null; //备注 @Persistent private String note=null; public AddressListForTest(String name,int age, ArrayList telephoneList, ArrayList addressList, String note){ this.friendName=name; this.age=age; this.telephone=new ArrayList(telephoneList);  [1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有