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)