自定义注解
来源:互联网 发布:淘宝卖家怎么复核认证 编辑:程序博客网 时间:2024/04/28 17:37
一、 定义
Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。
二、 代码案例
1. 定义注解
package annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public@interfaceMyAnnotation {
String[] value() default"abc";
}
2. 属性注解
package annotation;
import java.lang.reflect.Field;
publicclass AttributeAnnoTest {
@MyAnnotation("11")
public Stringstr;
publicstaticvoid main(String[] args) {
try {
AttributeAnnoTest test =new AttributeAnnoTest();
Field field = AttributeAnnoTest.class.getField("str");
//判断该属性是否包含MyAnnotation注解
if (field.isAnnotationPresent(MyAnnotation.class)){
MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);
field.set(test, annotation.value()[0]);
System.out.println(test.str);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:11
3. 方法注解
package annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
publicclass FunctionAnnoTest {
@MyAnnotation(value={"1","2"})
publicvoid test(String s1, String s2){
System.out.println("s1=" + s1 +", s2="+ s2);
}
publicstaticvoid main(String[] args) {
try {
FunctionAnnoTest test =new FunctionAnnoTest();
Method method = FunctionAnnoTest.class.getMethod("test",new Class[]{String.class, String.class});
if (method.isAnnotationPresent(MyAnnotation.class)){
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
String[] values = annotation.value();
method.invoke(test, values);
}
//获取方法上的所有注解
Annotation[] annotations = method.getAnnotations();
for(Annotation annotation : annotations){
System.out.println(annotation);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
s1=1, s2=2
@annotation.MyAnnotation(value=[1,2])
三、 总结
1. 使用自定义注解处理应用中的一些监听事件如:
1) 监控需要关心的sql执行的时间
2) 监控访问的页面执行时间
2. 依赖注入
3. 序列化@XStreamAlias
4. AOP
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- @自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- H264 RTP封包原理
- android_状态栏信息内容的更改
- iOS 7人机交互指南-Icon和Image设计-App Icon
- 运行中的虚拟机疑似出现暂停
- Palindrome Numbers
- 自定义注解
- 设计原则
- 我的火狐插件
- Visual Studio 2010制作安装包
- 李开复给中国大学生的第三封信:成功、自信、快乐
- 在线编译器
- 图像分析:分水岭算法解析
- 李开复给中国大学生的第四封信:大学四年应是这样度过
- Qt布局中Vertical Line的用法