我在下面的课程中有一个方法
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
将您的String
数组包装成一个Object
数组:
Sample object = new Sample();
Method m = object.getClass().getMethod("doSomething", String[].class);
String[] arr = {"v1", "v2"};
m.invoke(object, new Object[] {arr});
尽管varargs参数可能由多个值组成,但仍被视为一个参数。由于Method.invoke()
需要一个参数数组,因此需要将单个varargs参数包装到arguments数组中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句