Inheritance 使用jaxb映射抽象类时的java.lang.InstanceionException

Inheritance 使用jaxb映射抽象类时的java.lang.InstanceionException,inheritance,jaxb,xsitype,Inheritance,Jaxb,Xsitype,以下是我的博客帖子: 我做了所有相同的事情,除了我的子类不是公共的,并且与抽象类文件在同一个文件中。我得到java.lang.InstanceionException异常 javax.xml.bind.UnmarshaleException:无法创建org.apache.ambari.server.state.DependencyConditionInfo的实例 -除此之外: [java.lang.InstanceionException] 位于com.sun.xml.bind.v2.runt

以下是我的博客帖子:

我做了所有相同的事情,除了我的子类不是公共的,并且与抽象类文件在同一个文件中。我得到java.lang.InstanceionException异常 javax.xml.bind.UnmarshaleException:无法创建org.apache.ambari.server.state.DependencyConditionInfo的实例 -除此之外: [java.lang.InstanceionException] 位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:647)

编辑

当我使用@xmlsee时,我还需要提供一个默认构造函数,因此我无法初始化子类的数据成员


有人能帮我找到解决办法吗?谢谢

这之所以失败,是因为Jaxb将尝试创建用户的实例。这是抽象的,因此是失败的

在抽象类上添加注释

@XmlTransient //Prevents the mapping of a JavaBean property/type to XML representation
@XmlSeeAlso({Admin.class, <other class>}) //Instructs JAXB to also bind other classes when binding this class
@xmltransive//防止JavaBean属性/类型映射到XML表示
@XMLSEEALAST({Admin.class,})//指示JAXB在绑定此类时也绑定其他类
请参阅每个(,)的javadoc

这将阻止jaxb尝试初始化抽象类

我发现这个方法的唯一缺点是,在创建的xml中会添加额外的名称空间信息


由@wyche5000解决,谢谢,Hi Luca,在添加@xmlseealway之后出现了异常,但该标记要求子类使用默认构造函数。如果我添加默认构造函数,当子类的参数未初始化时,我会得到一个NullPointerException。你能给点建议吗?