反射用於加載Java類並在運行中操作它們。但是我遇到了一個奇怪的問題,那就是問我如何通過Reflection來即時創建Java類。我的意思是這些類沒有被編譯或者有源代碼,直到我們希望它們被創建。真的有可能嗎?任何例子?如何通過Java反射動態創建Java類?
0
A
回答
0
您可以嘗試ASM ASM
或字節碼工程庫
操縱,在運行時
創建類在.NET中,我們有Reflection.Emit的(C# )可以這樣做 Reflection.Emit
不確定是否有直接的java等價物。 你可以在這裏看到另一個類似的問題Java equivalent of reflection.emit
0
也許Apache DynaBeans會做。你可以找到一些關於如何創建和操作它們的教程。這裏:http://www.javaranch.com/journal/2003/07/TouringTheCommonsPart1.html
1
對我來說,你不需要反射,但只需要直接從你的代碼調用JavaCompiler:JavaCompiler。
2
您可以看看Bean Shell's eval method它可讓您即時執行任何Java代碼,而無需將代碼編譯爲字節碼。您可以將包含您的類的所有Java代碼的字符串傳遞給它的eval方法,並且您將返回一個動態創建的類的實例。讓我知道你是否對它感興趣,並希望我給你一個例子。
+1
但是'className'表示的類沒有被編譯,在字節代碼和源代碼中都沒有它的蹤跡。 'forName()'會失敗,不是嗎? – amit 2012-02-03 08:24:53
相關問題
- 1. 如何通過反射擴展Java類?
- 2. 使用Java動態創建類反射,java.lang.ClassNotFoundException
- 3. (Java)爲通過反射創建的新對象創建方法?
- 4. Java`InvocationTargetException`通過反射類實例化
- 5. 的Java通過反射
- 6. 如何動態創建Java POJO類?
- 7. 創建動態類型Java
- 8. Java - 動態創建子類
- 9. 創建通過反射
- 10. 通過反射動態創建通用列表時出錯
- 11. 動態通過反射
- 12. Java反射類
- 13. JAVA用反射創建嵌套靜態類的實例
- 14. java Singleton - 通過反射防止多次創建
- 15. 用java反射動態創建JSF表單
- 16. 如何確定Java類是否通過反射抽象
- 17. Java反射/通用
- 18. 如何動態創建使用反射的通用C#對象?
- 19. 如何拋出通過反射創建的Exception類的實例?
- 20. 在不使用反射API的情況下在JAVA中創建動態類?
- 21. Java反射:動態創建類實例並將其分配給父對象
- 22. 通過反射投射字段到Java中的數組類型
- 23. Java:靜態嵌套類和反射:「$」vs「。」
- 24. 關於子類的Java靜態反射
- 25. 如何通過反射動態創建並保存LINQ-to-SQL對象?
- 26. 如何通過動態反射在運行時創建RelayCommand的實例?
- 27. 通過Java代碼創建靜態表
- 28. 通過反射實例化Java對象
- 29. 用java反射通過其setter方法
- 30. Java通過反射獲取參數值
字節碼操作是neede。其實Javassist庫正是我所需要的。 – yyy 2012-02-04 11:13:30