使用jaxb2-maven-plugin 2.2版生成Equals和HashCode

时间:2017-09-14 07:08:58

标签: xml maven jaxb maven-jaxb2-plugin

我们使用jaxb2-maven-plugin(版本2.2),我们将为每个JaxbObject生成相等和hashCode方法。 我们已经使用binding.xjb文件来配置任何内容。

有没有办法生成这种方法?

如果我尝试添加参数-Xequals -XhashCode,我会得到以下异常:unbekannter参数-Xequals -XhashCode

配置:

<configuration> <arguments>-Xequals -XhashCode</arguments> </configuration>

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用JAXB2 Basics插件生成var sum = ints.Sum(); hashCode

equals

这将生成无深度反射的运行时依赖项 - 免费的<project ...> ... <build> <plugins> ... <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <extension>true</extension> <args> <arg>-XsimpleEquals</arg> <arg>-XsimpleHashCode</arg> </args> <plugins> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics</artifactId> <version>...</version> </plugin> </plugins> </configuration> </plugin> </plugins> </build> ... </project> equals方法:

hashCode

我个人更喜欢生成&#34;策略&#34; public boolean equals(Object object) { if ((object == null)||(this.getClass()!= object.getClass())) { return false; } if (this == object) { return true; } final PurchaseOrderType that = ((PurchaseOrderType) object); { USAddress leftShipTo; leftShipTo = this.getShipTo(); USAddress rightShipTo; rightShipTo = that.getShipTo(); if (this.shipTo!= null) { if (that.shipTo!= null) { if (!leftShipTo.equals(rightShipTo)) { return false; } } else { return false; } } else { if (that.shipTo!= null) { return false; } } } // ... return true; } public int hashCode() { int currentHashCode = 1; { currentHashCode = (currentHashCode* 31); USAddress theShipTo; theShipTo = this.getShipTo(); if (this.shipTo!= null) { currentHashCode += theShipTo.hashCode(); } } // ... return currentHashCode; } -Xequals方法。 &#34;战略&#34;从某种意义上说,这些方法使用传递策略进行相等或哈希码计算:

-XhashCode

战略方法非常酷,因为您可以自定义相等/哈希码计算 - 例如,确切结构不同的日志。这需要以运行时依赖为代价。

免责声明:我是JAXB2 Basics的作者。