![](/img/trans.png)
[英]Implementing abstract methods from abstract java class in generated jaxb class (inheritance)
[英]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( XmlTransient , XmlSeeAlso )
這樣做可以防止jaxb嘗試初始化您的抽象類。
我發現這個方法的唯一缺點是會在創建的xml中添加額外的命名空間信息。
由@ wyche5000解決
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.