Size: a a a

Kotlin Community

2020 June 05

AH

Ayrat Hudaygulov in Kotlin Community
не, я из F#/Scala
источник

AH

Ayrat Hudaygulov in Kotlin Community
там просто компиляторы за такие касты стреляют в голову сразу и я расслабился. Долго вкурить не мог за неявный каст. Ну да ладно
источник

AH

Ayrat Hudaygulov in Kotlin Community
Vladimir Sitnikov
javax.annotation.CheckReturnValue
а это случайно не только для джава кода работает?
источник

I

Ivan in Kotlin Community
Не подскажите?

У меня есть несколько data классов с одинаковыми полями и с одинаковой кастомной реализацией hashCode и equals.

Возможно как-то это реализовать, кроме как четыре раза писать одно и то же data class N (здесь) { и здесь }?

Нужны именно дата классы. Пробовал наследовать их от абстрактного, добавляя override в конструкторе, не помогло – вроде бы equals у дата класса работал не так, как у абстрактно
источник

AN

Alexander Nozik in Kotlin Community
Ivan
Не подскажите?

У меня есть несколько data классов с одинаковыми полями и с одинаковой кастомной реализацией hashCode и equals.

Возможно как-то это реализовать, кроме как четыре раза писать одно и то же data class N (здесь) { и здесь }?

Нужны именно дата классы. Пробовал наследовать их от абстрактного, добавляя override в конструкторе, не помогло – вроде бы equals у дата класса работал не так, как у абстрактно
Можно сделать общий abstract class в качестве наследника (если их надо сравнивать между собой) или вынести логику в отдельную функцию (если не надо)
источник

AN

Alexander Nozik in Kotlin Community
Ivan
Не подскажите?

У меня есть несколько data классов с одинаковыми полями и с одинаковой кастомной реализацией hashCode и equals.

Возможно как-то это реализовать, кроме как четыре раза писать одно и то же data class N (здесь) { и здесь }?

Нужны именно дата классы. Пробовал наследовать их от абстрактного, добавляя override в конструкторе, не помогло – вроде бы equals у дата класса работал не так, как у абстрактно
работает он точно так же. Просто генерируется сам.
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
Не подскажите?

У меня есть несколько data классов с одинаковыми полями и с одинаковой кастомной реализацией hashCode и equals.

Возможно как-то это реализовать, кроме как четыре раза писать одно и то же data class N (здесь) { и здесь }?

Нужны именно дата классы. Пробовал наследовать их от абстрактного, добавляя override в конструкторе, не помогло – вроде бы equals у дата класса работал не так, как у абстрактно
только один вопрос, вам точно нужен именно data class, смахивает на обычное наследование
источник

I

Ivan in Kotlin Community
Alexander Nozik
работает он точно так же. Просто генерируется сам.
Ну, в общем-то я так и сделал. data class наследуется от абстрактного, но equals у дата класса сработал не так, как описано в eqauls у абстрактного. Это ожидаемое поведение?
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
Ну, в общем-то я так и сделал. data class наследуется от абстрактного, но equals у дата класса сработал не так, как описано в eqauls у абстрактного. Это ожидаемое поведение?
нет, так как он генерируется, нужно переопределять
источник

BP

Bogdan Panchenko in Kotlin Community
и вызавать родительский
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
только один вопрос, вам точно нужен именно data class, смахивает на обычное наследование
Вообще, да. Вся суть конечных четырёх классов, которые мне нужны, – держать данные и всё. Ещё copy пользуюсь.

И у этих всех четырёх классов абсолютно одинаковые поля, equals и hashcode
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
и вызавать родительский
+
источник

AN

Alexander Nozik in Kotlin Community
Ivan
Вообще, да. Вся суть конечных четырёх классов, которые мне нужны, – держать данные и всё. Ещё copy пользуюсь.

И у этих всех четырёх классов абсолютно одинаковые поля, equals и hashcode
А как они могут быть одинаковыми если данные разные? А если данные одинаковые, зачем 4 класса?
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
Вообще, да. Вся суть конечных четырёх классов, которые мне нужны, – держать данные и всё. Ещё copy пользуюсь.

И у этих всех четырёх классов абсолютно одинаковые поля, equals и hashcode
Нужны разные имена классов
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
Нужны разные имена классов
да
источник

I

Ivan in Kotlin Community
Alexander Nozik
А как они могут быть одинаковыми если данные разные? А если данные одинаковые, зачем 4 класса?
данные разные, структура одинаковая
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
нет, так как он генерируется, нужно переопределять
ага, спасибо. но тогда получится, что можно было просто создать 4 дата класса через ctrl+c ctrl+v
источник

AN

Alexander Nozik in Kotlin Community
Немного странная идея. Нельзя просто еще одно поле с енумом сделать?
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
Вообще, да. Вся суть конечных четырёх классов, которые мне нужны, – держать данные и всё. Ещё copy пользуюсь.

И у этих всех четырёх классов абсолютно одинаковые поля, equals и hashcode
data class это обычный класс который который генерит copy, hashCode, equals, componentN
источник

AN

Alexander Nozik in Kotlin Community
Это уже какой-то го получается, если все так дублировать
источник