2008-09-24 45 views

回答

5

類加載器將不得不調用defineClass來獲取類。據的JavaDoc爲的defineClass:

如果名稱不爲空,它必須等於 由字節數組指定的類 的二進制名稱。

如果名稱爲空,它將從字節碼中得到它。所以你可以返回任何你想要的類,只要它叫做com.AClass。換句話說,你可以有多個版本的com.aclass。你甚至可以使用類似JavaAssist的東西來即時創建一個類。

但是這並沒有解釋ClassNotFoundException - 它聽起來像你的類加載器沒有返回任何東西。

1

不可能返回一個與請求不同的類。但是,可以使用像ASM這樣的字節碼操作工具來自動將要返回的類重命名爲所請求的類。

相關問題