1

我有课,例如...

@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 的示例中所示。不幸的是,这种特定的语法似乎不兼容。

任何帮助,将不胜感激。

4

1 回答 1

1

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

JAXBContext.newInstance(BinaryPredicate.class);
于 2013-06-14T22:11:00.653 回答