我是用在Aop日志管理中的
因为需要动态的去构造method对象,而传入CLASS中的第二个参数要求和原类的参数的一样。具体的看代码
//根据传入对象获得类名
String classType = joinPoint.getTarget().getClass().getName();
//根据传入对象获得方法名
String methodName = joinPoint.getSignature().getName();
//获得参数的OBJECT数组
Object[] args = joinPoint.getArgs();
//将Object[]转化为Class[]
Class[] Parameter = new Class[args.length];
for (int i = 0; i < args.length; i++) { //问题就在这里了,如果不用泛型的话,能正确工作,但是如果有泛型的话,args[i].getClass()得到的是原型,和方法中声明的不一样,自然在下一步构造Method的时候会“没有这个方法”了!
Parameter[i] = args[i].getClass();
}
//构造Class
Class <?> className = Class.forName(classType);
//构造Method,这就是我要的东西
Method method = className.getMethod(methodName, Parameter);
求高人给予指点迷津,在线恭候!
因为需要动态的去构造method对象,而传入CLASS中的第二个参数要求和原类的参数的一样。具体的看代码
//根据传入对象获得类名
String classType = joinPoint.getTarget().getClass().getName();
//根据传入对象获得方法名
String methodName = joinPoint.getSignature().getName();
//获得参数的OBJECT数组
Object[] args = joinPoint.getArgs();
//将Object[]转化为Class[]
Class[] Parameter = new Class[args.length];
for (int i = 0; i < args.length; i++) { //问题就在这里了,如果不用泛型的话,能正确工作,但是如果有泛型的话,args[i].getClass()得到的是原型,和方法中声明的不一样,自然在下一步构造Method的时候会“没有这个方法”了!
Parameter[i] = args[i].getClass();
}
//构造Class
Class <?> className = Class.forName(classType);
//构造Method,这就是我要的东西
Method method = className.getMethod(methodName, Parameter);
求高人给予指点迷津,在线恭候!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货