码迷,mamicode.com
首页 > 编程语言 > 详细

java自定义Annotation,得到注解类中Annotation设定的注解值

时间:2015-01-24 17:27:56      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:注解类中annotation设定的注解值

java注解机制在各大框架中应用普遍,注解中可以设置一些值,如何得到呢.

要得到注解类中Annotation设定的注解值 即:遍历自定义Annotation中的方法,反射执行方法,结果就是 对应的注解值。

     java代码例子:

package com.doctor.spring.core;

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;
import java.lang.reflect.Method;

/**
 * 自定义Annotation,得到注解类中Annotation设定的注解值 即:遍历自定义Annotation中的方法,反射执行方法,结果就是
 * 对应的注解值。
 * 
 * 对应复杂注解的处理参看:{@code AnnotationUtils}
 * 
 * @author doctor
 *
 * @time 2015年1月23日 下午6:15:31
 */

public class AnnotationPractice {

	public static void main(String[] args) throws ReflectiveOperationException {
		MyAnnotation myAnnotation = AnnotationP.class.getAnnotation(MyAnnotation.class);
		System.out.println(myAnnotation);
		// 输出:
		// @com.doctor.spring.core.AnnotationPractice$MyAnnotation(value=AnnotationP,
		// num=12, address=[1, 2])

		for (Method method : myAnnotation.annotationType().getDeclaredMethods()) {
			if (!method.isAccessible()) {
				method.setAccessible(true);
			}
			Object invoke = method.invoke(myAnnotation);
			System.out.println("invoke methd " + method.getName() + " result:" + invoke);
			if (invoke.getClass().isArray()) {
				Object[] temp = (Object[]) invoke;
				for (Object o : temp) {
					System.out.println(o);
				}
			}
		}
		// 输出:
		// invoke methd num result:12
		// invoke methd value result:AnnotationP
		// invoke methd address result:[Ljava.lang.String;@74a14482
		// 1
		// 2

	}

	@Retention(RetentionPolicy.RUNTIME)
	@Target(ElementType.TYPE)
	@Documented
	private @interface MyAnnotation {
		String value() default "";

		int num() default 100;

		String[] address() default {};
	}

	@MyAnnotation(value = "AnnotationP", num = 12, address = { "1", "2" })
	private static class AnnotationP {

	}
}


java自定义Annotation,得到注解类中Annotation设定的注解值

标签:注解类中annotation设定的注解值

原文地址:http://blog.csdn.net/doctor_who2004/article/details/43085809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!