我们通过 pom 扩展 JAXBEqualsStrategy:
<xjcArg>-Xequals-equalsStrategyClass=com.acme.foo.CustomEqualsStrategy</xjcArg>
CustomEqualsStrategy 扩展了 JAXBEqualsStrategy。在 Eclipse (Keplar) 中运行 MAVEN clean install generate-source 后,我们的模型类具有如下 equals 方法:
public boolean equals(Object object) {
final EqualsStrategy strategy = new CustomEqualsStrategy();
return equals(null, null, object, strategy);
}
然而,如果我们不扩展 JAXBEqualsStrategy,我们的模型类就会有这样的 equals 方法:
public boolean equals(Object object) {
final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
return equals(null, null, object, strategy);
}
JAXBEqualsStrategy 有
public static EqualsStrategy INSTANCE = new JAXBEqualsStrategy();
我们期望得到
final EqualsStrategy strategy = CustomEqualsStrategy.INSTANCE;
在生成的 equals 方法中并正在努力实现它。