一、概述
Annotation,JDK1.5开始提供
二、基本定义
public @interface HelloWorld {
}
1、使用@Interface定义,名称大写
2、使用@Target修饰能放到那些类属性上,不写是能修饰任何java上
3、元注解RetentionPolicy,表明注解的生命周期:
1、SOURCE:在原文件中有效,被编译器丢弃。
2、CLASS:在class文件有效,可能会被虚拟机忽略。
3、RUNTIME:在运行时有效。
4、成员,在注解中定义【不能是类类型,对象类型等,但是Class可以】
public String name();
增加缺省值
public String name() default "helloworld";
如果只有一个成员并且是value,在使用时可以省略,直接写值。
5、使用
@HelloWorld(name = "nihao1")
public class TestBean {
@HelloWorld(name = "nihao2")
private String name; @Override
@HelloWorld(name = "nihao3")
public String toString() {
System.out.println("zhixing");
return "TestBean [name=" + this.name + "]";
}
}
三、主要作用
1、针对以上不做任何处理其实没有任何用处
2、解析Annotation,然后处理问题
public class Parser {
public void parse(Object obj, String methodName) {
Method[] ms = obj.getClass().getMethods();
for (Method m : ms) {
if (m.getName().equals(methodName)) {
if (m.isAnnotationPresent(HelloWorld.class)) {
HelloWorld hw = m.getAnnotation(HelloWorld.class);
try {
System.out.println("before...");
m.invoke(obj, null);
System.out.println("after...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
3、Annotation处理的主要方法
4、可以取代xml配置