我在类中有一个方法,如下所示
class Sample{
public void doSomething(String ... values) {
//do something
}
public void doSomething(Integer value) {
}
}
//other methods
.
.
.
现在我收到了IllegalArgumentException:
下面的参数数量错误Sample object = new Sample();
Method m = object.getClass().getMethod( "doSomething", String[].class );
String[] arr = {"v1","v2"};
m.invoke( object, arr ) // exception here
答案 0 :(得分:8)
invoke
需要一组参数。
在你的情况下,你有一个类型为array的参数,所以你应该发送一个大小为1的数组,其中包含1个成员,这是第一个(也是唯一的)参数。
像这样:
Sample object = new Sample();
Method m = object.getClass().getMethod( "doSomething", String[].class );
String[] arr = {"v1","v2"};
Object[] methodArgs = new Object[] {arr};
m.invoke( object, methodArgs ); // no exception here
答案 1 :(得分:5)
将String
数组包裹在Object
数组中:
Sample object = new Sample();
Method m = object.getClass().getMethod("doSomething", String[].class);
String[] arr = {"v1", "v2"};
m.invoke(object, new Object[] {arr});