我有一个班级:
public class Color {
private double red;
private double green;
private double blue;
}
使用等于方法:
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Color color = (Color) o;
if (Math.abs(color.red - red) < COLOR_TRESHOLD) {
return false;
}
if (Math.abs(color.green - green) < COLOR_TRESHOLD) {
return false;
}
return Math.abs(color.blue - blue) < COLOR_TRESHOLD;
}
所以,正如你所看到的,我希望类似的颜色相同。 我的问题是如何为这种情况创建正确的哈希码实现。 当然,我可以返回恒定的价值。但这似乎不是一个好主意。
答案 0 :(得分:0)
你应该把:
if (o == null || getClass() != o.getClass()) {
return false;
}
作为第一次测试。有时如果传递了null并且它不是第一个检查的东西,则可以获得空指针异常。