У меня проблема с переопределением метода equals в Enum, чтобы сделать его совместимым с другими классами. Enum реализует интерфейс, и идея состоит в том, что все реализации этого интерфейса могут быть проверены на соответствие, независимо от их типа. Например:
public interface Group {
public Point[] getCoordinates();
}
public enum BasicGroups implements Group {
a,b,c; // simplified, they actually have constructors
// + fields and methods
}
public class OtherGroup implements Group {
// fields and methods
}
Если оба a BasicGroup
и a OtherGroup
имеют одинаковые координаты (в произвольном порядке), то метод equals должен возвращать true.
Нет проблем при выполнении myOtherGroup.equals(BasicGroup.a)
, но поскольку метод equals в Enums является окончательным, я не могу их переопределить.
Есть ли способ обойти это? Как и при тестировании в другой BasicGroup используется метод equals по умолчанию (ссылочное равенство), а при тестировании других классов используется моя собственная реализация. И как я могу убедиться, что java не использует неправильный, когда я делаю BasicGroup.a.equals(myOtherGroup)
?