如何在java中传递数组而不是变量参数?

时间:2017-09-04 10:05:59

标签: java arrays reflection arguments parameter-passing

我想将数组而不是变量参数传递给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}。

2 个答案:

答案 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 { }