Я знаю, что это задано очень много, и я не знаю, понимаю ли я хэш-коды, но это должен быть адрес, и как я могу исправить свой конкретный пример? Если я правильно понимаю, у меня есть двойники в моем классе, но я не могу добавить их в хэш-код, из-заПереопределение HashCode() в Java с двойными значениями
possible loss of precision
found : double
required: int
return this.area();
Вот мой Shape
класс:
abstract class Shape implements Comparable<Shape>
{
abstract double area();
public int compareTo(Shape sh){
return Double.compare(this.area(),sh.area());
}
public int hashCode() {
return this.area();
}
public boolean equals(Shape sh) {
if (sh instanceof Shape && this.area()==sh.area()) {
return true;
} else {
return false ;
}
}
}
Является area()
только значение Мне нужно беспокоиться о: hashCode()?
Поведение hashCode должно соответствовать таковому из равных таким образом, что если два объекта считаются равными с использованием 'equals', то хэш-код из двух объектов должен быть одинаковым. Если вы используете только область фигуры, чтобы определить, равна ли она, вы можете просто вернуть область для хэш-кода. – DanielGibbs
'Shape' - абстрактный класс. Вы хотите, чтобы две формы одной и той же области были равны, даже если они имеют разные формы? – khelwood