簡體   English   中英

當類名和方法名存儲在兩個不同的字符串中時,如何調用類的方法(在Java中)

[英]How to invoke methods of a class (in java) when class name and method name are stored in two different strings

好吧,不確定這個問題聽起來是否有點怪異,但讓我嘗試說明一下:

我有一個JSP頁面。 在此JSP頁面上,我要在項目下的一個包中定義一個Java類。 此類連接到數據庫並訪問具有字段的表,即功能名稱,功能類別。 現在,我可以在JSP中檢索兩個字符串,可以說-

String funName = "ComFunctions";
String className = "funLog");

現在,我想使用該類名來調用該函數,即基本上類似於-className.funName

Java可能嗎? 實際上,這些函數和類名將在for循環中檢索,因此我不能直接使用真實的類名進行調用,而必須使用字符串。

請提出是否有解決方法或問題,或者問題尚不清楚。

到目前為止,我嘗試了以下方法,但沒有成功-

Class c = Class.forName(className);
Object o = c.newInstance();
Method m = c.getMethod(funName, String.class); // Not sure what is supposed to be second parameter here i.e. after funName

錯誤-上面的代碼給出“找不到類錯誤”。 而且我確保該類在包裝下。 甚至添加軟件包名稱(即packge.classname)也無濟於事,它對軟件包名稱說“找不到符號”。

有指針嗎?

我嘗試調用的示例類-

package mypackage;

public class ComFunctions extends WDriverInitialize{

    public static void main(String[] args){


    }



    public static void funLog(String username){


        System.out.println(userName);


    }



}

您需要確保已編譯的類在webapp的類路徑中(即WEB-INF / classes),並使用FQN(即,添加程序包名稱)。 您還可以創建類的JAR文件,然后將其添加到WEB-INF / lib文件夾中。

另外,getMethod中的額外參數是獲取具有匹配參數的方法(即,在您的示例中,采用String的方法)。

您錯過了一個難題,那就是方法參數。 沒有它,您將無法真正確定funName指的是什么方法,以及傳遞給它的參數。

當然,該類必須位於類路徑中。

暫無
暫無

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

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