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

bwitn5fc  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(385)

我想把数组而不是变量参数传递给java方法。在类似的问题中,人们回答说数组和椭圆没有什么不同,所以它必须起作用。但这对我没用。这是我的密码:

String[] parameters = text.split("[?]");
Object[] params = Arrays.asList(parameters).toArray(new Object[parameters.length]);
params[0] = myObject;
method.invoke(params)

其中文本类似于: myMethod?param1?param2 ... 但也可能是 myMethod 以防方法没有参数。
java.lang.illegalargumentexception:sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)处sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)处的参数数目错误。java:62)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:497)
我该怎么办?
编辑时间:
我已经检查过了,变量参数的值是{mymethod,param1,param2}。

rbl8hiat

rbl8hiat1#

你得逃走 ? 拆分时,下面的命令应将字符串拆分为可以传递给方法的数组:

String s = "myMethod?param1?param2";
String[] tokens = s.split("\\?");
System.out.println(Arrays.toString(tokens));
ego6inou

ego6inou2#

“myobject”和“method”的类型是什么?
invoke方法应该有如下的签名returntype invoke(object。。。o) //对象,因为params是对象数组{}

相关问题