我想從一個XML閱讀字段名和類型來創建在運行時動態類file.For例如我的XML文件看起來像這樣:如何通過從xml文件讀取字段名稱和類型來反射創建java對象?
<person>
<name type="String">abc</name>
<age type="Integer">30</age>
</person>
我也希望有getter和setter方法方法每個領域。
可用於此的任何示例或最佳方法?
我想從一個XML閱讀字段名和類型來創建在運行時動態類file.For例如我的XML文件看起來像這樣:如何通過從xml文件讀取字段名稱和類型來反射創建java對象?
<person>
<name type="String">abc</name>
<age type="Integer">30</age>
</person>
我也希望有getter和setter方法方法每個領域。
可用於此的任何示例或最佳方法?
看看XStream,它很容易序列化到/從XML。
這在技術上是可行的,但是(除非有人能指出現有的解決方案),這將是很多工作。 (你可以通過生成源代碼並在運行時編譯它來做很多聰明的事情......例如。)
但是說實話,這可能不是一件有用的事情。一旦你將XML對象作爲一個全新的Java類的實例加載,你將很難使用它。首先,您現有的靜態編譯的應用程序只能反射地訪問新類的字段和方法。
IMO,您最好將XML加載到通用的Map
對象或Properties
對象中。或者,只需使用由現成的XML解析器創建的DOM。
或者,獲取XML的DTD,XSD或其他某種「模式」,並從中生成Java類。然後可以編寫和靜態編譯你的應用程序來調用這些類。
Java不是一種動態語言,因此您不能動態創建類,但術語「創建」在您的問題中沒有很好定義。
如果你的意思是實例化和初始化,可以用類似的庫非常容易做到系列化通過:
等
如果你的意思是你想在運行時在JVM中實際創建一個類文件,你可能需要查看更多動態的語言,這些語言可以在像Groovy或JRuby等JVM中運行。Groovy有一些非常酷的dynamic功能。
我認爲他希望能夠構建Java對象,即使他的代碼從未聽說過最初的序列化類。 – Pointy 2010-10-16 00:41:24