簡體   English   中英

Java動態函數調用

[英]Java dynamic function calling

我有一個字符串數組,其中包含yyyyyy類中的方法名稱

xxxxxx類中,我正在制作一個yyyyyy實例(比如obj )。 現在我可以調用obj.function_name() ,但我想在循環中從 String 數組中讀取function_name 這可能嗎?

你可以,使用反射 它是通過調用Yyyy.class.getMethod("methodName").invoke(someArgs)

您必須處理一堆異常,並且您的方法必須是public 請注意,java 編碼約定更喜歡methodName而不是method_name

然而,使用反射應該是最后的手段。 您應該使用更多面向對象的技術。

如果你經常需要類似的功能,也許你可以看看一些運行在java平台上的動態語言,比如Groovy

可以使用反射,但如果您需要這種行為,您可能應該對您的設計有所質疑。 Class.getMethod接受一個String作為方法名稱並返回一個Method對象,然后您可以調用.invoke來調用該方法

這些 Javadoc 頁面應該會有所幫助:

示例代碼(假設yyyyyy方法采用一個int參數,只是為了顯示參數傳遞):

yyyyyy obj = new yyyyyy();
String[] methodNames = {"foo", "bar", "baz"};
for(String methodName : methodNames) {
    Method method = Class.forName("yyyyyy").getMethod(methodName, new Class[] {int.class});
    method.invoke(obj, 4); // 4 is the argument to pass to the method
}

暫無
暫無

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

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