好的,所以來自主要是perl的背景,並且主要是編寫髒的小應用程序來自動執行我的任務,我已經閱讀了關於eval()的弊端,而且我總是使用散列(在perl中)。我目前正在製作一個小型項目(主要是爲了我和其他一些技術人員),以創建「預先回復」電子郵件。爲了允許添加,減少,編輯等,我希望本質上描述XML中的響應表單,並讓我的應用程序解析XML並在運行時創建響應表單。我想使用Java(它集成到我創建了一個現有的Java工具),並歸結爲一個簡單的例子,我想要做的是採取一些XML,如:java:使用變量的值作爲對象名稱(而不是eval()方式)
<Form Name="first" Title="Title!">
<Label Name="before">Your Request:</Label>
<Textbox Name="input"/>
<Label Name="after">has been completed.</Label>
<Output>%before%%input%%after%</Output>
</Form>
<Form Name="second">
...
和解析我想創建一個名爲first的JFrame,它包含一個名爲JLabel的明顯的文本,然後是一個文本框,然後是另一個JLabel ......您可以得到這個想法(我最終希望使用輸出標籤來控制響應被格式化)。
我可以解析XML,並獲得該元素的名稱等,但我不知道如何與一個名稱是一個變量的值,有效的實例化對象:
JFrame $(thisNode.getAttributes().getNamedItem("Name").getNodeValue()) = new JFrame(thisNode.getAttributes().getNamedItem("Title").getNodeValue());
我已經基本上閱讀了關於java反射的谷歌結果的整個第一頁,但我還沒有遇到任何人做我正在尋找的東西(至少不是我可以告訴)。基本上沒有反射經驗,我很好奇這是否可以使用它來完成,或者如果我應該採用與Perl中相同的方法,並創建對象的HashMap或HashTable,並將它們綁定到進入一堆JFrames。或者,我願意接受那些不屬於這兩類的想法。哈希是我的一個備用答案,因爲我已經在Perl中做了很多次,我確信我可以使它在Java中工作,但是如果有一個特性(如反射)可以做到這一點任務,那麼爲什麼不按照它打算完成的方式去做?