Java反射多个参数



我正在尝试使用Java反射,我有两个不同的方法可以调用。其中一个有一个String参数,第二个有两个String参数。我设法使第一个工作,但第二个仍在努力。我检查了对另外两个问题的引用(Java反射:getMethod(String方法,Object[].class)不起作用,以及如何使用反射在Java中用变量参数调用方法?),但不幸的是,他们运气不佳。我一直得到以下异常:

java.lang.NoSuchMethodException: controllers.InventoryController.combineItems([Ljava.lang.String;)
at java.lang.Class.getMethod(Unknown Source)

这是我的工作部分代码:

Class[] paramString = new Class[1];
paramString[0] = String.class;
try {
    Class cls = this.getClass();
    Method method = cls.getDeclaredMethod(commandParts[0], paramString);
    method.invoke(this, new String(commandParts[1]));
} catch (Exception ex) {
    System.out.println("Doesn't work");
    ex.printStackTrace();
}

下面是我无法工作的部分:

Class[] paramString = new Class[2];
paramString[0] = String[].class;
try {
    Class cls = this.getClass();
    Method method = cls.getMethod(commandParts[0], paramString[0]);
    method.invoke(this, new String[]{commandParts[1], commandParts[2]});
} catch (Exception ex) {
    System.out.println("Doesn't work");
    ex.printStackTrace();
}

传递多个参数的正确方式是什么?

错误是因为

Method method = cls.getMethod(commandParts[0], paramString[0]);

这表示返回方法名称"commandParts[0]"只有一个类型为"paramString[0]"的参数用更改

Method method = cls.getMethod(commandParts[0], String.class, String.class);

相关内容

  • 没有找到相关文章

最新更新