jialisoftw
java自定义注解接口
java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。
1、元注解
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
1.1、@Retention: 定义注解的保留策略
Java代码
@Retention
(RetentionPolicy.SOURCE)
//注解仅存在于源码中,在class字节码文件中不包含
@Retention
(RetentionPolicy.CLASS)
//默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention
(RetentionPolicy.RUNTIME)
//注解会在class字节码文件中存在,在运行时可以通过反射获取到
1.2、@Target:定义注解的作用目标
Java代码
@Target
(ElementType.TYPE)
//接口、类、枚举、注解
@Target
(ElementType.FIELD)
//字段、枚举的常量
@Target
(ElementType.METHOD)
//方法
@Target
(ElementType.PARAMETER)
//方法参数
@Target
(ElementType.CONSTRUCTOR)
//构造函数
@Target
(ElementType.LOCAL_VARIABLE)
//局部变量
@Target
(ElementType.ANNOTATION_TYPE)
//注解
@Target
(ElementType.PACKAGE)
///包
elementType 可以有多个,一个注解可以为类的,方法的,字段的等等
1.3、@Document:说明该注解将被包含在javadoc中
1.4、@Inherited:说明子类可以继承父类中的该注解
下面是自定义注解的一个例子
2、注解的自定义
Java代码
@Retention
(RetentionPolicy.RUNTIME)
@Target
(ElementType.METHOD)
public
@interface
HelloWorld {
public
String name()
default
"";
}
3、注解的使用,测试类
Java代码
public
class
SayHello {
@HelloWorld
(name = " 小明 ")
public
void
sayHello(String name) {
System.out.println(name + "say hello world!");
}//www.heatpress123.net
}
4、解析注解
java的反射机制可以帮助,得到注解,代码如下:
Java代码
public
class
AnnTest {
public
void
parseMethod(Class<?> clazz) {
Object obj;
try
{
// 通过默认构造方法创建一个新的对象
obj = clazz.getConstructor(
new
Class[] {}).newInstance(
new
Object[] {});
for
(Method method : clazz.getDeclaredMethods()) {
HelloWorld say = method.getAnnotation(HelloWorld.
class
);
String name = "";
if
(say !=
null
) {
name = say.name();
System.out.println(name);
method.invoke(obj, name);
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
public
static
void
main(String[] args) {
AnnTest t =
new
AnnTest();
t.parseMethod(SayHello.
class
);
}
}
原文:
http://www.software8.co/wzjs/java/1420.html
posted on 2012-11-23 15:48
飞猪一号
阅读(1151)
评论(1)
编辑
收藏
评论
#
re: java自定义注解接口[未登录]
2012-11-23 20:52
大头
学习了。
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2012年11月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
统计
随笔 - 43
文章 - 0
评论 - 33
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2013年5月 (4)
2013年4月 (1)
2013年3月 (1)
2013年2月 (3)
2013年1月 (12)
2012年11月 (8)
2012年10月 (14)
友情链接
jxlazzw
东莞网站建设
天涯博客
段正淳
站长software8.co
站长网
(rss)
转印机
搜索
最新评论
1. re: spring mvc3中的addFlashAttribute方法[未登录]
6666666666
--66
2. re: spring mvc3中的addFlashAttribute方法[未登录]
看看了
--kk
3. re: spring mvc3中的addFlashAttribute方法
发放范围广
--凤飞飞
4. re: Java中SimpleDateFormat格式化日期用法
健康和健康
--假货
5. re: 基于JavaBean,JSP实现登录并显示分页信息的小系统
十分感谢啊!太有用了!
--kad
阅读排行榜
1. spring mvc3中的addFlashAttribute方法(9442)
2. Java中SimpleDateFormat格式化日期用法(5010)
3. JSON与JAVA的数据转换(2823)
4. java将html实体字符转换成正常字符(2703)
5. 为什么总是缺人(2695)
评论排行榜
1. 为什么总是缺人(4)
2. JSON与JAVA的数据转换(4)
3. spring mvc3中的addFlashAttribute方法(3)
4. Java多线程对耗时方法的同步问题(3)
5. java将html实体字符转换成正常字符(3)