java.lang.IllegalArgumentException:字符串数组上的参数类型不匹配

java.lang.IllegalArgumentException:字符串数组上的参数类型不匹配,java,Java,这是我动态调用方法的代码: String[] parameters = new String[requiredParameters.length]; //here i put some values in the parameters array method = TestRecommendations.class.getMethod("level1ClassSimilarityForUser", String[].clas

这是我动态调用方法的代码:

String[] parameters = new String[requiredParameters.length];
//here i put some values in the parameters array
method = TestRecommendations.class.getMethod("level1ClassSimilarityForUser",
                                    String[].class);
System.out.println(":" + parameters[0] + ":");
results = (ResultSet) method.invoke(new TestRecommendations(), parameters)
parameters
是一个字符串数组,这是我的
level1ClassSimilarityForUser
方法的声明

public ResultSet level1ClassSimilarityForUser(String[] userURI) {
我得到这个错误:

java.lang.IllegalArgumentException: argument type mismatch

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)

invoke
需要一个
对象[]
作为第二个参数(varargs只是一种方便的语法)。 我认为在您的例子中,
String[]
不是作为第一个vararg参数,而是作为完整的vararg
Object[]
,因此您的单个字符串被用作与
String[]
不匹配的参数
在您的情况下,将参数显式地包装在
对象
数组中,然后再将其交给
调用
应该会起作用。
因此,请执行
results=(ResultSet)方法