带扩展容器的javax和@XmlElementRef

时间:2013-06-14 21:54:29

标签: java jaxb

我有像......这样的课程。

@XmlRootElement(name="Predicate")
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Predicate implements Serializable {
}

@XmlRootElement(name="Predicates")
@XmlAccessorType(XmlAccessType.FIELD)
public class Predicates extends ArrayList<Predicate> implements Serializable {
}

谓词碰巧是一些其他派生谓词类型的基类。 如你所见,它是抽象的。 当通过编组器进行序列化时,它似乎不会创建元素 对于派生类型,因此在解组时我得到一个例外。

unable to create an instance of com.ballytech.paytable.Predicate

当扩展包含抽象基类型的容器类时,我应该如何正确地遵循和序列化继承。我什么时候能做到 我有类成员,它们是包含抽象基类型的容器,如有关@XmlElementRef的示例所示。不幸的是,这种特定的语法似乎不兼容。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

显然,解决方案是在类中加载类类型 JAXBContext.newInstance(...)参数。

JAXBContext.newInstance(BinaryPredicate.class);