是否可以为使用jaxb生成的类生成equals和compareTo方法

Pau*_*lor 6 java equals jaxb

是否可以为使用jaxb生成的类生成equals和compareTo方法,我使用jaxb从模式生成类.这些类实际上有guid,允许它们被唯一标识,但是我如何实现equals/compare方法,以便Set等集合类可以识别同一实体的重复实例?

lex*_*ore 4

好的,这是另一种方法。

您可以使用该-XcodeInjector插件来添加hashCodeequals方法。

看这个问题:

使用选项“ -Xinject-code -extension ”插入 XJC+xsd+jxb 代码

就像是:

<jxb:bindings schemaLocation="schema.xsd">
    <jxb:bindings node="/xs:schema/xs:complexType[@name='MyItemType']">
        <ci:code>
            @Override
            public int hashCode() { return guid == null? 0 : guid.hashCode();}
        </ci:code>
    </jxb:bindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)

如果这还不够好,请考虑在 JAXB2-Basics 中提交问题(“允许选择 hashCode/equals 的属性”)或实现您自己的插件。