java里.class和getClass()获取为什么不一样啊

图片说明
图片说明
图片说明
这样运行会抛出java.lang.NoSuchMethodException: User.setAge(java.lang.String, java.lang.Integer)但是如果直接将getDeclaredMethod中的参数换位String.class, int.class运行就不会出错,请问我这个getParamType方法写的有问题么

你的方法名错了,,,,仔细看messager类中的方法,,名字错了,,,多个1

Teacher.class也就是类名只能点class,new Teacher().getClass()或者是new Teacher().class。即对象才有getClass()方法。
不行的原因是getParamType(objs)得到的是一个数组。用反射时,参数和原来的方法的参数应该对应,换成
Class classArray = getParamType(objs);
Method method2 = clazz.getDealeredMethod(method ,objs[0],objs[1]);
应该就可以了。

一般情况参数不超过五个(超过之后就用集合传参),所以可以根据getParamType返回的数组大小,进行判断
if(classArray.length==2){
Method method2 = clazz.getDealeredMethod(method ,objs[0],objs[1]);
}else if(classArray.length==3){
Method method2 = clazz.getDealeredMethod(method ,objs[0],objs[1],objs[2]);
}
一直写到五,这是目前我能想到的了,应该有更好的方法我觉着。所以有点抱歉
Class<?>[] parameterTypes = method.getParameterTypes();直接得到参数