У меня есть черта, для которой я знаю, что эталонное равенство никогда не является правильной реализацией equals
. Реализации признака могут быть написаны многими пользователями, и практика показывает, что иногда они не могут переопределить equals
. Есть ли способ его потребовать?
На практике реализации обычно представляют собой классы case, которые автоматически переопределяют equals
, и мы можем подойти, требуя, чтобы, имея Product
в качестве самонапряжения признака, я бы хотел увидеть решение, которое позволяет классы, не относящиеся к случаю, переопределяющие equals
(EDIT: Использование scala.Equals
, поскольку самонастройка является более близким приближением к тому, что я хочу, поскольку оно по-прежнему автоматически выполняется классами case, но может быть полезно реализовано классами, отличными от случая и не является большой нагрузкой для людей, пишущих реализации).
Еще один подход, о котором я думал при написании этого вопроса, - переопределить equals
в признаке, чтобы вызвать абстрактный метод, но, к сожалению, это не работает для реализации классов case.