使用可变形参过程中,整数自动装箱转换成了Integer类型,导致反射过程中错误如何解决?
public class FrameTest {
public static void main(String[] args) {
invoke("hello","charAt",3);
}
public static void invoke(Object obj, String methodName, Object ... params) {
Method method = null;
Class[] clas = new Class[params.length];
for (int i = 0; i < params.length; i++) {
clas[i] = params[i].getClass();
}
try {
method = obj.getClass().getMethod(methodName,clas);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
method.invoke(obj,params);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
java.lang.NoSuchMethodException: java.lang.String.charAt(java.lang.Integer)
我的解答思路和尝试过的方法
我知道哪里出了问题,但是必须使用可变形参,无法避免自动装箱
我想要达到的结果
正确调用方法