Java反射机制总结(实例分析)(二)
long long ago,写过一篇反射机制总结一,后来一直没有续写,今天续写一下反射机制的第二篇总结:
利用反射操作Annotation。因为上一篇已经涵盖了反射的所有入门知识,所以这篇不做过多叙述。如果需要从头学起,
建议看看我的上一篇随笔Java反射机制总结(实例分析)(一)。
上代码:自定义注释类
package com.sy.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAnnotation {
String p() default "shiyang";
String p2();
}
使用注释的类:
package com.sy.annotation;
public class MyTest {
@MyAnnotation(p2="haha")
public void output() {
System.out.println("output something");
}
}
反射读取注释的类:
package com.sy.reflection;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import com.sy.annotation.MyAnnotation;
import com.sy.annotation.MyTest;
public class MyReflection {
public static void main(String[] args) throws Exception{
MyTest myTest=new MyTest();
Class<MyTest> c=MyTest.class;
Method method=c.getMethod("output",new Class[]{});
if (method.isAnnotationPresent(MyAnnotation.class)) {
method.invoke(myTest,new Object[]{});
MyAnnotation myAnnotation=method.getAnnotation(MyAnnotation.class);
String p=myAnnotation.p();
String p2=myAnnotation.p2();
System.out.println(p+","+p2);
}
Annotation[] annotations=method.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation.annotationType().getName());
}
}
}
代码很简洁,抛砖引玉。
以上是 Java反射机制总结(实例分析)(二) 的全部内容, 来源链接: utcz.com/z/392049.html