[英]Correct hashcode implementation for Colors
我有一堂課:
public class Color {
private double red;
private double green;
private double blue;
}
用這樣的equals方法:
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;
}
因此,如您所見,我希望相似的顏色相等。 我的問題是如何針對這種情況創建正確的哈希碼實現。 當然我可以返回恆定值。 但這似乎不是一個好主意。
您應該輸入:
if (o == null || getClass() != o.getClass()) {
return false;
}
作為第一個測試。 有時,如果傳遞了null而不是首先檢查的內容,則可能會得到null指針異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.