![](/img/trans.png)
[英]java.lang.IllegalArgumentException: argument type mismatch
[英]java.lang.IllegalArgumentException: argument type mismatch on string array
這是我動態調用方法的代碼:
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
期望一個Object[]
作為第二個參數(varargs只是一種方便的語法)。 我認為在你的情況下, String[]
不作為第一個vararg參數,但完整的vararg Object[]
因此你的單個字符串被用作與String[]
不匹配的參數。
在您的情況下,在給予invoke
之前將參數顯式地包裝在Object
數組中應該有效。
所以results = (ResultSet) method.invoke(new TestRecommendations(), new Ojbect[] { parameters })
代替
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.