2012-02-03 64 views
0

反射用於加載Java類並在運行中操作它們。但是我遇到了一個奇怪的問題,那就是問我如何通過Reflection來即時創建Java類。我的意思是這些類沒有被編譯或者有源代碼,直到我們希望它們被創建。真的有可能嗎?任何例子?如何通過Java反射動態創建Java類?

回答

1

對我來說,你不需要反射,但只需要直接從你的代碼調用JavaCompiler:JavaCompiler

2

您可以看看Bean Shell's eval method它可讓您即時執行任何Java代碼,而無需將代碼編譯爲字節碼。您可以將包含您的類的所有Java代碼的字符串傳遞給它的eval方法,並且您將返回一個動態創建的類的實例。讓我知道你是否對它感興趣,並希望我給你一個例子。

+1

但是'className'表示的類沒有被編譯,在字節代碼和源代碼中都沒有它的蹤跡。 'forName()'會失敗,不是嗎? – amit 2012-02-03 08:24:53