JAXB的第一步 - 抽象类和子类型

时间:2014-06-25 09:33:22

标签: java xml jaxb

所以这些是我使用jaxb的第一步。 // 所以我已经使用了XmlSeeAlso。** enter image description here

我有一个小班的假期。其中一些应该是以东方为基础的,一些是固定的(如新年,依此类推)

所以我创建了上面的类。

总而言之,我有一个持有假期的holidayDB课程; 并且应该能够对其进行编组和解组。

编组在我眼中正常工作(短片):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<holidayDB xmlns:ns2="core.calendar.holiday" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">
    <holiday xsi:type="fix" day="1" month="FEBRUARY" name="NEW_YEAR"/>
    <holiday xsi:type="var" daysAfterEaster="49" name="PENTECOAST_SUNDAY"/>
</holidayDB>

这是一个FixedHoliday和VariableHoliday的子类,应该从xml文件反向生成。

但这是问题所在。 Jaxb尝试将FixedHoliday或者VariableHoliday实例化,这是不可能的,因为这是抽象类。

有人对jaxb新秀有一点小小的提示吗?!

提前谢谢。 Java代码请求:)

gretings

//编辑:

所以这是我的假期课程:

@XmlSeeAlso({ FixedHoliday.class, VariableHoliday.class })
public abstract class Holiday {

........

}

这里有一个扩展版本als摘要

@XmlType(name = "var")
@XmlRootElement
public abstract class VariableHoliday extends Holiday {

...
@XmlAttribute(name = "daysAfterEaster")
abstract int getDaysAfterEaster();


}

直到现在还没有任何不抽象的实现。 jaxb应该从xml

生成非抽象类

2 个答案:

答案 0 :(得分:1)

如果我没记错,你必须使用@XmlSeeAlso注释来表明你班级的具体实施。例如,这对我有用List

我刚做了一点功率搜索,而here是一个相关的问题。

答案 1 :(得分:1)

使用@XmlSeeAlso注释抽象类。例如:

@XmlSeeAlso({Dog.class,Cat.class})
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}

更多信息here