2

我有一个 hyperjaxb xsd 文件和绑定配置。如何强制我生成的类实现在另一个工件中声明的自定义接口?我知道我可以让他们通过使用扩展另一个类

    <xjc:superClass name="com.sample.jpa.entities.BaseEntity"/>

但我也需要他们实现另一个接口。我怎样才能做到这一点?

4

1 回答 1

1

免责声明:HyperjaxbJAXB2-Basics的作者在这里。

您可以将JAXB2-Basics中的继承插件Hyperjaxb一起使用。你既可以扩展一个类,也可以实现一个接口。该插件还可以处理泛型,因此您甚至可以执行.<inheritance:implements>com.acme.foo.MyInterface&lt;com.acme.foo.SomeClass&gt;</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>
    

应该是这样的。

于 2015-10-09T06:25:36.227 回答