Java如何在运行时使用反射获取注解?
本示例演示如何获取类和方法的注解。我们使用反射API来获取类和方法信息,从中我们可以读取有关附加到该类或方法的注解的信息。
package org.nhooo.example.lang.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@HelloAnnotation(value = "Hello", greetTo = "Universe")
public class GettingAnnotation {
public static void main(String[] args) {
GettingAnnotation demo = new GettingAnnotation();
Class clazz = demo.getClass();
Annotation[] annotations = clazz.getAnnotations();
for (Annotation anno : annotations) {
System.out.println("Annotation Type: " + anno.annotationType());
}
HelloAnnotation anno = (HelloAnnotation) clazz.getAnnotation(HelloAnnotation.class);
System.out.println("Anno Value : " + anno.value());
System.out.println("Anno GreetTo: " + anno.greetTo());
try {
Method m = clazz.getMethod("sayHi");
anno = m.getAnnotation(HelloAnnotation.class);
System.out.println("Anno Value : " + anno.value());
System.out.println("Anno GreetTo: " + anno.greetTo());
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
demo.sayHello();
}
@HelloAnnotation(value = "Hi", greetTo = "Alice")
public void sayHi() {
}
@HelloAnnotation(value = "Hello", greetTo = "Bob")
public void sayHello() {
try {
Method m = getClass().getMethod("sayHello");
HelloAnnotation anno = m.getAnnotation(HelloAnnotation.class);
System.out.println(anno.value() + " " + anno.greetTo());
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}您可以HelloAnnotation在下面的示例中找到上面使用的注解:如何创建简单的注解?
我们程序的结果是:
Annotation Type: interface org.nhooo.example.lang.annotation.HelloAnnotation Anno Value : Hello Anno GreetTo: Universe Anno Value : Hi Anno GreetTo: Alice Hello Bob
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短