使用反射获得参数列表里的注解getParameterAnnotations

我们在使用spring操作orm层的时候常常会见到在方法的参数列表里添加注解的情况。当这种情况的时候可以使用getParameterAnnotations方法来获得这些注解。
public void testa(@TestAnnocation(pat = "5") String s,
@TestAnnocation2 @TestAnnocation(pat = "6") String s1,
 String s3,
@TestAnnocation(pat = "9") String s4) {
		System.out.println("------------" + s);
	}
例如这个方法中有四个参数。在参数中又有注解。我们就可以用这种方法来获得
Class<TestObj> c = TestObj.class;
		Method[] m = c.getMethods();
		for (Method m1 : m) {
			if ("testa".equals(m1.getName())) {
				Annotation[][] an = m1.getParameterAnnotations();

				for (Annotation[] an1 : an) {
					System.out.println(an1.length + "-------------6");
					for (Annotation an2 : an1) {
						System.out.println(an2.annotationType().getSimpleName());
					}
				}
			}
//			Class[] mp = m1.getParameterTypes();
//			for (Class mp1 : mp) {
//				System.out.println(mp1.getSimpleName() + "---" + m1.getName());
//			}
//			System.out.println(m1.getName());
		}
当我们使用这个方法的时候Annotation[][] an = m1.getParameterAnnotations();获得了一个注解的二维数组。第一个维度对应参数列表里参数的数目,第二个维度对应参数列表里对应的注解。如上图的示例方法有四个参数。则第一个维度的长度就是四。在参数列表中第二个参数有两个注解,第三个参数没有注解。则在第二个维度中他们对应的长度分别是2和0。执行结果如下。
1-------------6
TestAnnocation
2-------------6
TestAnnocation2
TestAnnocation
0-------------6
1-------------6
TestAnnocation
一并附上自定义注解的代码。
package com.test.reflection;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnocation {
	
	public String pat() default "3";
	public String value()default "0";

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值