好的,所以来自主要是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中工作,但是如果有一个特性(如反射)可以做到这一点任务,那么为什么不按照它打算完成的方式去做?