169 похожих чатов

Почему нельзя наследоватся от data class?

10 ответов

46 просмотров

Потому что нарушается контракт equals и hashcode

Предположу, потому что методы, которые генерируются в дата классе (equals, hashcode, copy), при наследовании сломают LSP и вообще непонятно как их генерировать у наследника. Если у вас добавляется пропертя в наследнике, то весь смысл дата класса теряется

Alexander Nozik
Потому что нарушается контракт equals и hashcode

Да не, для насоедрвания можно их также переопределять. Но наследования датаклассов не очень красивое из-за конструктора

Bohdan Panchenko
Да не, для насоедрвания можно их также переопредел...

Гарантия пропадает. И в любом случае наследник не будет выполнять контракт предка

Alexander Nozik
Гарантия пропадает. И в любом случае наследник не ...

Какой контракт ? Гарантия не пропадает так как для нового класса нужно генерить eq и хеш заново, вопрос только в приватных полях - по ним eq не перегенерируешь. В целом наследования дата классов не так просто сделать, да и вопрос нужно ли. Про контракт а то дата класс может наследоватся от другого (с иквелс и хешем) контракт не сломает, на eq и хеш код ?

Bohdan Panchenko
Какой контракт ? Гарантия не пропадает так как для...

B: A a: A b: B a == b b != a // из-за дополнительного поля

Alexander Nozik
B: A a: A b: B a == b b != a // из-за дополнительн...

Так там должна быть проверка на класс. Они оба будут false. Вы давно иквелс ручками не писали

Bohdan Panchenko
Так там должна быть проверка на класс. Они оба буд...

Согласен, но для data class там все-таки дата еквалити подразумевается.

Alexander Nozik
Согласен, но для data class там все-таки дата еква...

Согласен, я и не говорю что это нужно вводить. Я говорю что можно, но профита не вижу, мне пару раз подобное нужно было и то можно было по другому

Bohdan Panchenko
Согласен, я и не говорю что это нужно вводить. Я г...

Про проблемы я молчу - там граблей будет больше чем сейчас:

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта