Класс определяет compareTo() и использует Object.equals()

 public int compareTo(DynamicField other) {
     return other.wildcard.length() - wildcard.length();
 }

 boolean equals(DynamicField other) { 
    return compareTo(other) == 0; 
 } 

Я столкнулся с этой проблемой. Не могли бы вы предложить мне, как это решить? Мои реализации метода, как указано выше


person Enigma    schedule 21.10.2013    source источник


Ответы (1)


Ваш метод equals определен неправильно, он должен быть:

@Override
public boolean equals(Object obj)
{
  ...
}

Что-то вроде этого должно работать:

@Override
public boolean equals(Object obj)
{
  if (!(obj instanceof DynamicField))
     return false;
  return compareTo((DynamicField)obj) == 0;
}

Если вы переопределяете метод другого класса или реализуете метод интерфейса, вы всегда должны добавлять @Override. Если вы определили его неправильно, он должен сказать вам что-то вроде:

method does not override or implement a method from a supertype
person Bernhard Barker    schedule 21.10.2013