2

hyperjaxb xsd ファイルとバインディング構成があります。生成されたクラスに、別のアーティファクトで宣言されたカスタム インターフェイスを強制的に実装するにはどうすればよいですか? を使用して別のクラスを拡張できることを知っています

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

しかし、別のインターフェースも実装する必要があります。どうすればそれを達成できますか?

4

1 に答える 1

1

免責事項: HyperjaxbおよびJAXB2-Basicsの著者はこちら。

JAXB2-BasicsのInheritance プラグイン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 に答える