自定义注解:
package ReflectAnnotation;
public @interface MyAnnotation4 {
String name();
String password();
}
自定义类
```cpp
package ReflectAnnotation;
public class MyAnnotationTest04 {
@MyAnnotation4(name = "admin",password = "123")
public void doSome(){
}
}
使用放射机制获取方法上的注解
`
``package ReflectAnnotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class ReflectAnnotationTest02 {
public static void main(String[] args) throws Exception{
Class c = Class.forName("ReflectAnnotation.MyAnnotationTest04");
Method method = c.getDeclaredMethod("doSome");
System.out.println(method.isAnnotationPresent(MyAnnotation4.class));
if (method.isAnnotationPresent(MyAnnotation4.class)){
Annotation annotation = method.getAnnotation(MyAnnotation4.class);
if (annotation instanceof MyAnnotation4){
MyAnnotation4 myAnnotation = (MyAnnotation4)annotation;
System.out.println(myAnnotation.name()+" "+myAnnotation.password());
}
}
}
}
结果:
原因分析:在编写注解代码时,没有给自定义注解加上Retention注解,设置Retention注解为(RetentionPolicy.RUNTIME),则注解可以被反射机制获取。
package ReflectAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation4 {
String name();
String password();
}