如何为JAXB解组对象添加功能?

时间:2015-10-15 22:01:31

标签: java xml jaxb

我有一个XML模式(.xsd文件),我使用JAXB从中生成Java类。对于许多生成的类,都有相关的函数。例如,对于生成的类Dog,将有一个函数public static void bark(Dog),对于生成的类Cat,将会有一个函数public static void meow(Cat)

在像Java这样的面向对象语言中,这感觉很奇怪。我希望将XML解组为包含有用和相关功能的对象,而不仅仅是结构化。

因此,如果生成的类在包gen中,那么我将使用这些类的不同包:

public class Cat extends gen.Cat {
    public void meow() { ... }
}
public class Dog extends gen.Dog {
    public void bark() { ... }
}

有没有办法解密这些功能更强的子类而不是gen.*类?

1 个答案:

答案 0 :(得分:0)

这类问题的答案通常是“使用或编写XJC插件”。

您可以使用代码注入器插件将代码添加到生成的类中,请参阅以下答案:

您可以使用JAXB2-Basics中的继承插件扩展类或实现接口:

免责声明:我是JAXB2-Basics的作者。

从设计角度来看,模式派生类可能被视为DTO,在这种情况下不应包含功能。然后,您将需要一个商业模型,并使用Dozer之类的东西在DTO和您的商业模式类之间进行映射。