我正在寻找构建动态Java类的聪明方法,即可以在运行时添加/删除字段的类.使用场景:我有一个编辑器,用户应该能够在运行时向模型添加字段,甚至可以在运行时创建整个模型.
一些设计目标:
HashMap吗?也许在设置过程中使用数组并为字段分配索引?)请注意,这是一个"圈外思考"的问题.我将在下面发布一个例子让你心情愉快:-)
使用Ant的xjc2任务绑定一些有效的XML文档时,我收到以下失败消息:
[xjc2] [ERROR] null
[xjc2] unknown location
Run Code Online (Sandbox Code Playgroud)
这些文档与已成功绑定的其他文件非常相似,所有导入的模式都存在.生成以详细模式运行xjc:
Parent is not Defined Class...I cannot get the fields from this class
Run Code Online (Sandbox Code Playgroud)
任何人都知道这意味着什么?
我有 XML 输入,它本质上是一个树结构。目标是(取消)将代码编组到 Java 类中。
<config>
<key-value-pair>
<key>Key1</key>
<value>Value1</value>
</key-value-pair>
<key-value-pair>
<key>Key2</key>
<value>
<key-value-pair>
<key>Subkey2</key>
<value>Value999</value>
</key-value-pair>
</value>
</key-value-pair>
</config>
Run Code Online (Sandbox Code Playgroud)
XML 包含典型的键/值对。和每一个值可以包含另一个键/值对,或列表键/值对或只是一个单一的字符串值。
<config>
<key-value-pair>
<key>Key1</key>
<value>Value1</value>
</key-value-pair>
<key-value-pair>
<key>Key2</key>
<value>
<key-value-pair>
<key>Subkey2</key>
<value>Value999</value>
</key-value-pair>
</value>
</key-value-pair>
</config>
Run Code Online (Sandbox Code Playgroud)
然后我只有另一个包装类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
static class KeyValuePair {
@XmlElement(name="key")
private String key;
@XmlElement(name="value")
private String value; // here I don't know how to reflect
// the choice of String or another
// list of KeyValuePair objects
@XmlElement(name="value")
private List<KeyValuePair> valuePairs; …Run Code Online (Sandbox Code Playgroud)