This class will parse our annotation and trigger some other invocations related to what we want.
注释解析类的基本观点是用Java反射读取有关注释的信息
原文: http://isagoksu.com/2009/development/java/creating-custom-annotations-and-making-use-of-them/
注释解析类的基本观点是用Java反射读取有关注释的信息
The basic idea behind the annotation parser is using Java reflections to access the annotation information/attributes etc.
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface Test {
String info() default "";
}
class Annotated {
@Test(info = "AWESOME")
public void foo(String myParam) {
System.out.println("This is " + myParam);
}
}
class TestAnnotationParser {
public void parse(Class clazz) throws Exception {
Method[] methods = clazz.getMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(Test.class)) {
Test test = method.getAnnotation(Test.class);
String info = test.info();
if ("AWESOME".equals(info)) {
System.out.println("info is awesome!");
// try to invoke the method with param
method.invoke(Annotated.class.newInstance(), info);
//用这种办法生成一种被注释的类
}
}
}
}
}
public class Demo {
public static void main(String[] args) throws Exception {
TestAnnotationParser parser = new TestAnnotationParser();
parser.parse(Annotated.class);
}
}
原文: http://isagoksu.com/2009/development/java/creating-custom-annotations-and-making-use-of-them/