簡體   English   中英

java.lang.IllegalArgumentException:字符串數組上的參數類型不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM