簡體   English   中英

使用jaxb映射抽象類時的java.lang.InstantiationException

[英]java.lang.InstantiationException while mapping abstract class using jaxb

我關注的是博客文章: http//blog.bdoughan.com/2010/11/jaxb-and-inheritance-using-xsitype.html

我做了所有相同的事情,除了我的子類不公開,並且與抽象類文件在同一個文件中。 我得到java.lang.InstantiationException異常javax.xml.bind.UnmarshalException:無法創建org.apache.ambari.server.state.DependencyConditionInfo的實例 - 鏈接異常:com.sun中的[java.lang.InstantiationException]。 xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:647)

編輯

當我使用@XmlSeeAlso時,我需要提供一個默認構造函數,因此我無法初始化子類的數據成員。

任何人都可以幫我找到解決方案嗎? 謝謝

為什么失敗是因為Jaxb將嘗試創建User實例。 這是抽象的,因此是失敗的。

在抽象類上添加注釋

@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

看每個的javadoc( XmlTransientXmlSeeAlso

這樣做可以防止jaxb嘗試初始化您的抽象類。

我發現這個方法的唯一缺點是會在創建的xml中添加額外的命名空間信息。

由@ wyche5000解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM