Re: [問題] 書中一段有關 Reflection 的敘述

看板java作者 (._.)時間16年前 (2010/01/11 01:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《erotic (eRoTiC)》之銘言: (這邊我不引了) Reflection 的功能我目前是有拿來做過以 String 動態選擇 Class 執行特定行為. 從上述文字大體上可以認為 R 類別內部會以某種 Reflection 的方式呼叫 M 類別. 作了部份修改後肯定也可以依需要呼叫其他任意類別. 甚至是不存在的類別. 如果每個有可能呼叫到的類別的要確認其存在, 這一整個是沒完沒了. (把 "Mouse" 換成 main 的 args[0] 之類的) 那呼叫到了不存在的類別, 會出現 『找不到指定的類別』 ...? 去原程式碼中去看那也只是去觸發到了 ClassNotFoundException 這個例外 所以才會印出那樣的文字出來. 大體上猜測是 Class.forName("Mouse"); 時根據 classpath 找不到 M 類別 實際上我並未執行程式測試就是了. 至於"編譯 ReflectEX1.java 檔時,將無從得知 Mouse 類別的相關資訊。" 這句話我完全看不懂。而且我不太去研究編譯期間發生的事情。 : 上面這段總共有六行,後面五行在解釋第一行, : 可是我看不懂,既然 Reflection 機制不需要知道類別的資訊, : 為何在只有編譯、執行 ReflectEX1.java 的情況下,會丟出例外, 我想你應該是指單獨對 R 檔編譯, 並執行才會觸發例外事件. 第一次看的時候還以為編譯的過程也出了一些問題. : 必須在編譯 Mouse.java 後,才能正常執行 ReflectEX1.java? 編譯以後 classpath 找到 M 類別, Class c 可以正確的給值 應該就不會觸發 ClassNotFoundException. 不過一樣, 我並未實際執行程式碼驗證過. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.32.238

01/11 01:58, , 1F
感謝大大的指點,我懂了!
01/11 01:58, 1F
文章代碼(AID): #1BIXB4Q9 (java)
文章代碼(AID): #1BIXB4Q9 (java)