我有一个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.*
类?
答案 0 :(得分:0)
这类问题的答案通常是“使用或编写XJC插件”。
您可以使用代码注入器插件将代码添加到生成的类中,请参阅以下答案:
您可以使用JAXB2-Basics中的继承插件扩展类或实现接口:
免责声明:我是JAXB2-Basics的作者。
从设计角度来看,模式派生类可能被视为DTO,在这种情况下不应包含功能。然后,您将需要一个商业模型,并使用Dozer之类的东西在DTO和您的商业模式类之间进行映射。