Java 如何使用反射调用带有参数的方法?
这是我的班级:Java 如何使用反射调用带有参数的方法?,java,reflection,dynamic,types,parameters,Java,Reflection,Dynamic,Types,Parameters,这是我的班级: public class A{ private void doIt(int[] X, int[] Y){ //change the values in X and Y } } 我有另一个类试图使用doIt修改两个数组。我的代码中有一个错误,但找不到它 public class B{ public void myStuff(){ A myA = new A(); int[] X = {1,2,3,4,5}; int[] Y
public class A{
private void doIt(int[] X, int[] Y){
//change the values in X and Y
}
}
我有另一个类试图使用doIt
修改两个数组。我的代码中有一个错误,但找不到它
public class B{
public void myStuff(){
A myA = new A();
int[] X = {1,2,3,4,5};
int[] Y = {4,5,6,7,8,9};
Method doIt = A.class.getDeclaredMethod("doIt",new Object[]{X,Y}); // error
doIt.setAccessible(true);
doIt.invoke(myA,new Object[]{X,Y});
}
}
有关于如何修复方法myStuff
的帮助吗
如果我使用getDeclaredMethod(“doIt”,新对象[]{X,Y})代码>代码不编译
如果我有getDeclaredMethod(“doIt”,null)
然后它说NoSuchMethodException
这个doIt
方法需要两个参数。因此,除了方法名称之外,还需要将两个参数传递给。另外两个参数需要是的实例,对象[]
显然不是。具体来说,那些Class
实例需要与doIt
接受的参数类型相同
Method doIt = A.class.getDeclaredMethod("doIt", int[].class, int[].class);
难道不是吗
Method doIt = A.class.getDeclaredMethod("doIt", int[].class, int[].class);
您的方法是用两个int数组声明的
private void doIt(int[] X, int[] Y)
如果你想找到那个方法,你还需要把它的参数类型放进去,以防止找到其他同名但类型不同的方法
A.class.getDeclaredMethod("doIt", int[].class, int[].class)