Size: a a a

2019 November 07

AN

Alexander Nozik in Kotlin Start
А, не, наоборот дата класс может наследовать, но не быть унаследованным. Причину я объясил
источник

P

Phoenix in Kotlin Start
Alexander Nozik
потому что может быть переопределено equals в наследнках и все может сломаться. Но вообще вроде был разговор про то, что дата класс может наследовать дата класс... сейчас гляну
Но почему переопределение equals все сломает? Это ведь не затронет логику класса предка, наследник чисто определит метод equals для себя
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
Но почему переопределение equals все сломает? Это ведь не затронет логику класса предка, наследник чисто определит метод equals для себя
Ну и вы получите несимметричный equals
источник

AN

Alexander Nozik in Kotlin Start
Еще в дата классе у вас поведение зависит от порядка элементов, поскольку генерируется componentN, а если вы в наследнике поле добавите?
источник

P

Phoenix in Kotlin Start
Alexander Nozik
Еще в дата классе у вас поведение зависит от порядка элементов, поскольку генерируется componentN, а если вы в наследнике поле добавите?
Тогда лучше юзать делегацию для создания логики подобной к наследованию?
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
Тогда лучше юзать делегацию для создания логики подобной к наследованию?
Вы сначала сформулируйте, зачем вам наследовать дата классы. Пример?
источник

P

Phoenix in Kotlin Start
Alexander Nozik
Вы сначала сформулируйте, зачем вам наследовать дата классы. Пример?
На самом деле я чисто пытаюсь разобраться в этой теме и как действовать если такая необходимость возникнет. К примеру класс который несет информацию обо всех эвентах в системе и особенный эвент, который остается просто эвентом для большинства, но добавляет несколько своих полей и логики которые юзаются в паре конкретных мест
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
На самом деле я чисто пытаюсь разобраться в этой теме и как действовать если такая необходимость возникнет. К примеру класс который несет информацию обо всех эвентах в системе и особенный эвент, который остается просто эвентом для большинства, но добавляет несколько своих полей и логики которые юзаются в паре конкретных мест
Обычно вы делаете силед класс и его наследники уже дата классы.
источник

P

Phoenix in Kotlin Start
Alexander Nozik
Обычно вы делаете силед класс и его наследники уже дата классы.
Но мне ведь нужно обращаться с классом Event как с data классом, плюс нет смысла нагружать его лишним знанем обо всех своих наследниках
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
Но мне ведь нужно обращаться с классом Event как с data классом, плюс нет смысла нагружать его лишним знанем обо всех своих наследниках
А какая функциональность дата класса вам нужна от евента?
источник

P

Phoenix in Kotlin Start
Alexander Nozik
А какая функциональность дата класса вам нужна от евента?
equals, toString
источник

AN

Alexander Nozik in Kotlin Start
Как раз знание о наследниках - это казалось бы полезная фича дла эвента, можно полное перечисление делать.
источник

P

Phoenix in Kotlin Start
Но нет нужды в полном перечислении, ни одна часть системы не использует всех наследников одновоеменно
источник

A

Aleksandr in Kotlin Start
Посмотрите, пожалуйста, реализацию метода class2Flow (пытаюсь сделать рестарт): https://pl.kotl.in/NUggQBE5B
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
equals, toString
ну как я уже сказал, наследование дата классов, как раз equals и ломает. Если у вас A <- B и оба дата классы, то будет a == b, но и b != a
источник

AN

Alexander Nozik in Kotlin Start
Aleksandr
Посмотрите, пожалуйста, реализацию метода class2Flow (пытаюсь сделать рестарт): https://pl.kotl.in/NUggQBE5B
там есть кнопочка компактифицировать ссылку
источник

P

Phoenix in Kotlin Start
Alexander Nozik
ну как я уже сказал, наследование дата классов, как раз equals и ломает. Если у вас A <- B и оба дата классы, то будет a == b, но и b != a
Тогда какой механизм стоит использовать вместо наследования?
источник

AN

Alexander Nozik in Kotlin Start
Phoenix
Тогда какой механизм стоит использовать вместо наследования?
наследование, просто не надо делать дата классами. equals генерится автоматом идеей.
источник

II

Ivan I in Kotlin Start
Phoenix
Тогда какой механизм стоит использовать вместо наследования?
компазиция
источник

P

Phoenix in Kotlin Start
Alexander Nozik
наследование, просто не надо делать дата классами. equals генерится автоматом идеей.
Но если мне для предка нужны методы data класса?
источник