簡體   English   中英

Java反射多個參數

[英]Java reflection multiple parameters

我正在嘗試使用Java反射,並且有兩種不同的調用方法。 其中一個具有單個String參數,第二個具有兩個String參數。 我設法使第一個工作,但仍在努力處理第二個。 我檢查了對其他兩個問題的引用( Java反射:getMethod(String method,Object []。class)不起作用,以及如何使用反射使用Java中的可變參數調用方法? ),但是不幸的是,它們沒有運氣。 我不斷收到以下異常:

java.lang.NoSuchMethodException: controllers.InventoryController.combineItems([Ljava.lang.String;)
at java.lang.Class.getMethod(Unknown Source)

這是我的代碼工作部分:

Class[] paramString = new Class[1];
paramString[0] = String.class;
try {
    Class cls = this.getClass();

    Method method = cls.getDeclaredMethod(commandParts[0], paramString);
    method.invoke(this, new String(commandParts[1]));
} catch (Exception ex) {
    System.out.println("Doesn't work");
    ex.printStackTrace();
}

現在這是我無法工作的部分:

Class[] paramString = new Class[2];
paramString[0] = String[].class;

try {
    Class cls = this.getClass();

    Method method = cls.getMethod(commandParts[0], paramString[0]);
    method.invoke(this, new String[]{commandParts[1], commandParts[2]});
} catch (Exception ex) {
    System.out.println("Doesn't work");
    ex.printStackTrace();
}

傳遞多個參數的正確方法是什么?

錯誤是由於

Method method = cls.getMethod(commandParts[0], paramString[0]);

這表示返回方法名稱“ commandParts [0]”只有​​一個類型為“ paramString [0]”的參數,請使用

Method method = cls.getMethod(commandParts[0], String.class, String.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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