一个Annotation如果要是想让其变得有意义,则必须结合反射机制取得Annotation中
设置的全部内容;
package com.simple.demo;
public class SimpleBeanOne{
@SuppressWarnings("unchecked")
@Deprecated
@Override
public String toString(){
return "hello girls";
}
}
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class ReflectDemo{
public static void main(String args[]) throws Exception{
Class c=null;
c=Class.forName("com.simple.demo.SimpleBeanOne");
Method toM=c.getMethod("toString");
Annotation an[]=toM.getAnnotations();
for(Annotation a:an){
System.out.println(a);
}
}
}
以上得到的结果是:@java.lang.Deprecated()
package com.simple.demo;
public class SimpleBeanTwo{
@SuppressWarnings("unchecked")
@Deprecated
@Override
@MyDefaultAnnotationReflect(key="yuj",value="lid")
public String toString(){
return "hello boys";
}
}
package com.simple.demo;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(value=RetentionPolicy.RUNTIME)
public @interface MyDefaultAnnotationReflect{
public String key() default "LID";
public String value() default "YUJ";
}
package com.simple.demo;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class ReflectDemo{
public static void main(String args[]) throws Exception{
Class c=null;
c=Class.forName("com.simple.demo.SimpleBeanTwo");
Method toM=c.getMethod("toString");
if(toM.isAnnotationPresent(MyDefaultAnnotationReflect.class)){
//判断该方法上是否存在Annotation
MyDefaultAnnotationReflect mda=null;
mda=toM.getAnnotation(MyDefaultAnnotationReflect.class);
String key=mda.key();
String value=mda.value();
System.out.println("key="+key);
System.out.println("value="+value);
}
}
}
总结:
1、Annotation 在实际的开发中,不管如何使用,其最终肯定是结合反射机制,也就是说
可以通过Annotation设置一些内容到一个方法上去,已完成特定的功能;
2、日后在学习EJB 3.0中可以发现更多Annotation应用;
本文深入探讨了Java注解与反射机制在实际开发中的应用,详细解析了如何通过注解设置方法属性,以及如何利用反射获取并操作这些注解信息。包括对特定注解类型如@Deprecated和自定义注解的实例分析,展示了注解在功能实现上的灵活性与强大性。
1723

被折叠的 条评论
为什么被折叠?



