我们使用jaxb2-maven-plugin(版本2.2),我们将为每个JaxbObject生成相等和hashCode方法。 我们已经使用binding.xjb文件来配置任何内容。
有没有办法生成这种方法?
如果我尝试添加参数-Xequals -XhashCode,我会得到以下异常:unbekannter参数-Xequals -XhashCode
配置:
<configuration> <arguments>-Xequals -XhashCode</arguments> </configuration>
谢谢!
答案 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的作者。