Re: [問題] 有沒有可能做到類似函式指標的功能?

看板java作者 (會寫程式 找不到工作)時間16年前 (2010/05/18 21:58), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串7/8 (看更多)
※ 引述《ciphero (奶油焗蛋餃...:))》之銘言: (略) : 以上是一段簡單易懂的程式碼,想要呼叫什麼 Method,就輸入那個方法當作參數就好 : 但是缺點是相當難以維護, : 只要我新增了一個 printD() 方法,也就必須要在 main() 裡面加上: : else if(argv[0]=="printD") abc.printD(); : 這一段 code 才行,相當不方便 : 理想的程式,應該是新增了任何 printX() 之後,在 main() 裡面並不需要另外做修改 : 這個目標,在 C 語言裡可以經由函式指標來達到,但是 JAVA 沒有辦法這麼做 : 不知道是否有其他的解法? 剛剛在查一些關於指標的問題 意外發現這篇 順便回覆一下 Code很短 是對原PO的Sample稍作修改後的結果 應該不用詳註 使用 reflection 的方法 : import java.lang.reflect.*; public class test { public static void main(String argv[]) throws Exception { Class tmp = Class.forName("ABC"); tmp.getMethod(argv[0]).invoke(null); } } class ABC { public static void printA() { System.out.println("這是 printA()."); } public static void printB() { System.out.println("這是 printB()."); } public static void printC() { System.out.println("這是 printC()."); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.21.156 ※ 編輯: runtime 來自: 163.22.21.156 (05/18 22:06)

05/19 05:54, , 1F
我的印像是reflection頗傷perf. 但沒實際測過不知差多少
05/19 05:54, 1F
文章代碼(AID): #1ByfqCtI (java)
討論串 (同標題文章)
文章代碼(AID): #1ByfqCtI (java)