gpt4 book ai didi

java - 解码扩展抽象泛型类的类

转载 作者:行者123 更新时间:2023-12-01 13:13:04 25 4
gpt4 key购买 nike

我的类层次结构:

@XmlAccessorType(XmlAccessType.FIELD)
public abstract class GenericItem {
@XmlElement(name = "Id", required = true)
private String itemId;
////other fields
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Item extends GenericItem {
@XmlElement(name = "AreaType", required = true)
private String areaType;
///other fields
}


@XmlAccessorType(XmlAccessType.FIELD)
public abstract class GenericData<T extends GenericItem>{

@XmlElement(name = "Item")
private List<T> itemList;

public List<T> getItemList() {
return itemList;
}

public void setItemList(List<T> itemList) {
this.itemList = itemList;
}
////other fields
}


@XmlRootElement(name = "Data")
@XmlAccessorType(XmlAccessType.FIELD)
public class Data extends GenericData<Item> {
////other fields
}

当我尝试解开看起来像这样的 XML 文档时

 <Data>
<Item/>
<Item/>
</Date>

我有错误javax.xml.bind.UnmarshalException - 带有链接异常:[com.sun.istack.SAXParseException2;无法创建 GenericItem 的实例]

  JAXBContext jc = JAXBContext.newInstance(Data.class, GenericData.class,Item.class, GenericItem.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
--error here--> JAXBElement<Data> jb = unmarshaller.unmarshal(xmlStreamReader, Data.class);

拜托,我需要帮助:(

最佳答案

作为解决方法,删除抽象关键字并尝试通用类。

list of java classes to be recognized by the new JAXBContext. 

这就是文档中对 classesToBeBound 参数的描述,它表示它应该能够创建一个新对象来识别参数。对于抽象类,这是不可能的。

尝试结合使用@MappedSuperclass@XmlSeeAlso。用这些注释基类并使它们抽象。

关于java - 解码扩展抽象泛型类的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com