【发布时间】:2014-08-24 05:09:09
【问题描述】:
我最近开始编写包含一些 JAXB 可序列化/可反序列化类的代码。其中一个类中有几个列表,我想向其中添加一个新列表。这些列表最初被声明为 ArrayList。同样,get 方法也返回 ArrayList。我将它们全部更改为 List 并添加了新列表以及 List。但在那之后,我无法将此对象的 xml 解组为 JAVA 对象。当我将字段更改回 ArrayList 而没有任何其他更改时,解组工作正常。我还尝试将 DefaultValidationEventHandler 附加到 Unmarshaller,但它在解组时不会吐出任何错误。下面是类和变量名更改后的类的样子
@XmlRootElement(name = "commandSet")
public class CommandSet {
private final ArrayList<Command> xCommands;
private final ArrayList<Command> yCommands;
@Override
@XmlElementWrapper(name = "xCommands")
@XmlElement(name = "xCommand", type = Command.class)
public ArrayList<Command> getXCommands() {
return this.xCommands;
}
@Override
@XmlElementWrapper(name = "yCommands")
@XmlElement(name = "yCommand", type = Command.class)
public ArrayList<Command> getYCommands() {
return this.yCommands;
}
}
当 xCommands 和 yCommands 被声明为 List 并且 getter 也返回 List 时,unmarhsalling 不起作用。
在我为解组列表找到的所有示例中,人们使用 List 而不是 ArrayList。任何想法为什么它不适用于 List?
【问题讨论】:
标签: jaxb unmarshalling