我有一个 hyperjaxb xsd 文件和绑定配置。如何强制我生成的类实现在另一个工件中声明的自定义接口?我知道我可以让他们通过使用扩展另一个类
<xjc:superClass name="com.sample.jpa.entities.BaseEntity"/>
但我也需要他们实现另一个接口。我怎样才能做到这一点?
免责声明:Hyperjaxb和JAXB2-Basics的作者在这里。
您可以将JAXB2-Basics中的继承插件与Hyperjaxb一起使用。你既可以扩展一个类,也可以实现一个接口。该插件还可以处理泛型,因此您甚至可以执行.<inheritance:implements>com.acme.foo.MyInterface<com.acme.foo.SomeClass></inheritance:implements>
简短指南:
通过<arg>-Xinheritance</arg>
在您的pom.xml
. 就像是:
<plugin>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>maven-hyperjaxb3-plugin</artifactId>
<configuration>
<!--result>mappingFiles</result-->
<roundtripTestClassName>org.jvnet.hyperjaxb3.ejb.tests.cuone.RoundtripTest</roundtripTestClassName>
<args>
<arg>-Xinheritance</arg>
</args>
</configuration>
</plugin>
JAXB2-Basics 是 Hyperjaxb 的依赖项,因此您很可能不需要在这里做任何其他事情。请参阅示例(对于注释插件,但这并不重要)。
inheritance:extends
使用自inheritance:implements
定义元素自定义您的复杂类型。例子:
<jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
<jaxb:bindings node="xsd:complexType[@name='WillBeMadeCloneableType']">
<inheritance:implements>java.lang.Cloneable</inheritance:implements>
</jaxb:bindings>
</jaxb:bindings>
应该是这样的。