我正在使用maven-jaxb2-plugin从xsd创建java类。在xsd中,我定义了两种状态:Status1和Status2。这两个类有很多类似的变量。因为我无法编辑xsd是否有选项在我的项目中创建类Status,然后添加更改生成的类来扩展此类?
实施例
现在:
Class Status1 {...}
Class Status2 {...}
我想要的是什么:
Class Status1 extends Status {...}
Class Status2 extends Status {...}
Class Status {...}
- 我自己的班级
我希望这可以通过绑定来完成,但我不知道如何
更新:
第二个选项如何实现这个问题就是将类Status1添加到新变量中。这可能吗?
我想要的是什么:
Class Status1 {... NewVariable newVariable ...}
Class Status2 {...}
答案 0 :(得分:1)
好的我找到了: 我使用extend:
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.1" xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jaxb:extensionBindingPrefixes="inheritance">
<jaxb:bindings schemaLocation="mySchema.xsd">
<jaxb:bindings node="xsd:complexType[@name='StatusType']">
<inheritance:extends>my.package.Status1</inheritance:extends>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
在JAXB2插件中我需要添加:
<extension>true</extension>
<args>
<arg>-Xinheritance</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.4</version>
</plugin>
</plugins>
答案 1 :(得分:0)
问题的第一部分见Specifying Super Class of a JAXB-Generated Class。
第二部分见Generate additional custom method with jaxb-xjc。 这是关于添加自定义方法。但自定义字段处理应该类似。