У меня есть черта, для которой я знаю, что эталонное равенство никогда не является правильной реализацией equals
. Реализации признака могут быть написаны многими пользователями, и практика показывает, что иногда они не могут переопределить equals
. Есть ли способ его потребовать?Заставляет все реализации признака переопределить равные
В реализациях практики, как правило, тематические классы, которые замещают equals
автоматически, и мы можем приблизиться к требующим , что имея Product
в качестве самостоятельного типа признака, однако, я хотел бы видеть решение, которое позволяет не классы классов, переопределяющие equals
(EDIT: использование scala.Equals
, поскольку самонастройка является более близким приближением к тому, что я хочу, поскольку оно по-прежнему автоматически выполняется классами case, но может быть полезно реализовано классами, отличными от случая, и не является большая нагрузка на людей, записывающих реализации).
Еще один подход, о котором я думал при написании этого вопроса, состоит в том, чтобы переопределить equals
в свойстве вызова абстрактного метода, но, к сожалению, это не работает для реализации класса case.
насчет - черта Foo { переопределение Защиту равна (OBJ: Scala. Любой): Boolean = ??? } – Maxim
Не могли бы вы подробнее рассказать о работе _doesn't для реализации класса case_? [Этот рабочий лист] (https://gist.github.com/Odomontois/865d91180cc2e30435bf) отлично сработал для меня – Odomontois
@Maxim Проблема в том, что когда 'equals' переопределяется в предке класса case, реализация не генерируется. –