问题
在Java领域,我们经常需要编写equals , hashCode和toString方法。 老实说,这通常只是一个样板义务。
得益于智能IDE,我们通常不再自己这样做。 我们只是让和IDE一起努力。 不过有一个问题。 生成的代码通常非常丑陋。 让我们考虑以下POJO:
public class Beer {
private String brand;
private String type;
private int degrees;
private double alcoholPercentage;
private List<String> ingredients;
// constructor
// getters, setters if needed
}
通常的解决方案
所有主要的IDE都具有生成我提到的方法的能力,但这就是hashCode,equals和toString的样子:
1.等于– IF语句的长列表...
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Beer)) {
return false;
}
final Beer beer = (Beer) o;
if (Double.compare(beer.alcoholPercentage, alcoholPercentage) != 0) {
return false;
}
if (degrees != beer.degrees) {
return false;
}
if (!brand.equals(beer.brand)) {
return false;
}
if (!ingredients.equals(beer.ingredients)) {
return false;
}
if (!type.equals(beer.type)) {
return false;
}
return true;
}