[英]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.