繁体   English   中英

Java反射多个参数

[英]Java reflection multiple parameters

我正在尝试使用Java反射,并且有两种不同的调用方法。 其中一个具有单个String参数,第二个具有两个String参数。 我设法使第一个工作,但仍在努力处理第二个。 我检查了对其他两个问题的引用( Java反射:getMethod(String method,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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM