这里只例举了在方法上的注解操作,其他方面与此操作类似,我就不多提了,想深入了解可以查资料或者看书哈,具体看代码如何实现吧。
我编写的注解处理器代码为:
被测试的类内容如下:
代码实现如下:
package com.jiaxun.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class AnnotationDemo {
//通过注解来实现方法调用
public static void annotationTest1()throws Exception{
Class clazz = Class.forName("com.jiaxun.annotation.TestClass");
TestClass newInstance = (TestClass)clazz.newInstance();
for (Method method : clazz.getMethods()) {
for (Annotation annotation : method.getAnnotations()) {
String annotationName = annotation.annotationType().getSimpleName();
String annotationFieldName = ((Test) annotation).name();
if(annotationFieldName.equals("zengjiaxun"))
method.invoke(newInstance);
}
}
}
//通过注解属性值来实现方法调用
public static void annotationTest2()throws Exception{
Class clazz = Class.forName("com.jiaxun.annotation.TestClass");
TestClass newInstance = (TestClass)clazz.newInstance();
for (Method method : clazz.getMethods()) {
Annotation[] annotations = method.getAnnotations();
for (Annotation annotation : annotations) {
String annotationName = ((Test)annotation).name();
if(annotationName.equals("xun")){
method.invoke(newInstance);
}
}
}
}
public static void main(String[] args) throws Exception {
annotationTest1();
annotationTest2();
}
}
输出结果为