我有许多具有共同属性的实体。没有 xml 模式,所以我自己编写 jaxb 实体。
abstract class SuperEntity {
protected String id;
protected String name;
@XmlElement
public void setId() { .. sets Id .. }
@XmlElement
public void setName() { .. sets name .. }
}
// id and name are null after deserialization .. they are completely ignored
// there are other entities such as this, I don't want to repeat my code
@XmlRootElement
@XmlSeeAlso({SuperEntity.class})
class SpecificEntity extends SuperEntity {
protected String specificField;
@XmlElement
public void setSpecificField() { .. sets specific field .. }
}
SuperEntity 根本没有反序列化(解码),字段为空。如果我将字段和 setter 从父类(super class)复制到特定类,它会起作用,但我不想只将该代码复制到每个子实体。感谢您的帮助。
最佳答案
将类定义更改为
@XmlRootElement
@XmlSeeAlso({SpecificEntity.class})
abstract class SuperEntity {
@XmlRootElement
class SpecificEntity extends SuperEntity {
关于java - 使用 JAXB 继承(解码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553634/