Я студент-программист, и я начал Java
неделю назад. Я изучал эти общие типы, и я хотел смешивать их с равными и Overriding, поэтому я написал программу, которая создает объект под названием Punto с двумя атрибутами (pointX, pointY), чтобы имитировать координаты. Я написал статический метод вне основного класса, который использует два «Puntos» в качестве параметров и равен им. Вот код этого метода:Метод переопределения равный дает ошибку
public static boolean iguales(PuntoImpl<Double> p1, PuntoImpl<Double> p2){
return p1.equals(p2);
}
И вот моя попытка переопределения равна:
@Override
public boolean equals(final Object obj)
{
if (obj == null || !(obj instanceof PuntoImpl))
return false;
PuntoImpl<T> other = (PuntoImpl<T>) obj;
if (other.puntoX != this.puntoX) return false;
if (other.puntoY != this.puntoY) return false;
return true;
}
Пытаюсь равно две точки с одинаковыми параметрами координат X и координату Y, но она возвращает я ложный. Можете ли вы помочь мне найти ошибку?
Каковы типы putoX и putoY? – Stultuske
instanceof уже выполняет null-check, вы можете оставить nullcheck, если вы сделаете это так, но я бы рекомендовал заменить проверку instanceof проверкой на равенство фактических классов. – Stultuske
Они типа T (generic), но я использую их как Double – xFunkyTImes