[英]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.