繁体   English   中英

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

[英]How to add functionality to JAXB unmarshalled objects?

我有一个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.*类中?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM