【发布时间】:2018-02-12 13:19:01
【问题描述】:
我想将数组而不是变量参数传递给 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:参数数量错误 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497)
我该怎么办?
已编辑:
我查过了,变量参数的值是{myMethod, param1, param2}。
【问题讨论】:
-
是什么让你觉得有区别?您是否尝试过仅使用“?”进行拆分,[ 和 ] 在那里做什么?
-
数组与省略号没有什么不同你是什么意思?
-
用椭圆表示要传递给方法的参数数量可变。
-
所以你的方法使用可变参数?像“public void myMethod(Object... arguments)?
-
没有。不是我的方法。内置的“调用”方法。
标签: java arrays reflection arguments parameter-passing