我想将数组而不是变量参数传递给java方法。在类似的问题中,人们回答说,数组与省略号没什么不同,所以它必须有效。但它对我不起作用。 这是我的代码:
String[] parameters = text.split("[?]");
Object[] params = Arrays.asList(parameters).toArray(new Object[parameters.length]);
params[0] = myObject;
method.invoke(params)
其中 text 类似于:myMethod?param1?param2 ...
但是如果方法没有参数,它也可以是myMethod
。
java.lang.IllegalArgumentException:参数数量错误 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497)
我该怎么办?
被修改:
我已经检查过,变量参数的值是{myMethod,param1,param2}。
答案 0 :(得分:0)
分割时需要转义?
,下面应该将String拆分为可以传递给方法的数组:
String s = "myMethod?param1?param2";
String[] tokens = s.split("\\?");
System.out.println(Arrays.toString(tokens));
答案 1 :(得分:0)
什么是“myObject”和“method”的类型?
invoke方法应该具有如下签名 returntype invoke(Object ... o)// Object,因为params是Array Of Objects { }