反射应用-取得指定的Annotation中的内容

应用场景:将Annotation中指定的内容设置到对应的操作中,这在EJB3.0中经常使用。

反射应用-取得指定的Annotation中的内容_第1张图片

Retention:(n)保留、维持、记忆、固位。定义一个Annotation的保存范围.

反射应用-取得指定的Annotation中的内容_第2张图片


回顾:3个内建的Annotation的定义
反射应用-取得指定的Annotation中的内容_第3张图片


自定义一个RUNTIMER 的Annotation
package zz.reflectannotation ;
import java.lang.annotation.Retention ;
import java.lang.annotation.RetentionPolicy ;
@Retention(value=RetentionPolicy.RUNTIME)	// 此Annotation在类执行时依然有效
public @interface MyDefaultAnnotationReflect{
	public String key() default "ZSS" ;
	public String value() default "张三四" ;

}

在类中使用Annotation,为说明问题,使用4个Annotation,其中3个为JDK内建的
package zz.reflectannotation ;
public class SimpleBeanTwo{
	@SuppressWarnings("unchecked") 
	@Deprecated
	@Override
	@MyDefaultAnnotationReflect(key="ZzBBS",value="www.blog.csdn.net/zhangze_wancheng.cn")
	public String toString(){
		return "Hello 张三四!!!" ;
	}
};

取得指定的Annotation
package zz.reflectannotation;
import zz.reflectannotation.MyDefaultAnnotationReflect ;
import java.lang.annotation.Annotation ;
import java.lang.reflect.Method ;
public class ReflectDemo02{
	public static void main(String args[]) throws Exception{	// 所有异常抛出
		Class <?> c = null ;
		c = Class.forName("zz.reflectannotation.SimpleBeanTwo") ;
		Method toM = c.getMethod("toString") ;	// 找到toString()方法
		if(toM.isAnnotationPresent(MyDefaultAnnotationReflect.class)){
			// 判断是否是指定的Annotation
			MyDefaultAnnotationReflect mda = null ;
			mda = toM.getAnnotation(MyDefaultAnnotationReflect.class) ;	// 得到指定的Annotation
			String key = mda.key() ;	// 取出设置的key
			String value = mda.value() ;	// 取出设置的value
			System.out.println("key = " + key) ;
			System.out.println("value = " + value) ;
		}
	}
};

结果:
key = ZzBBS
value = www.blog.csdn.net/zhangze_wancheng.cn





你可能感兴趣的:(exception,String,Class,import,interface,deprecated)