Kotlin - классы данных могут быть унаследованы - PullRequest
2 голосов
/ 16 апреля 2019

Мне нужно унаследовать класс данных A от класса данных B, я знаю, что это невозможно в Kotlin

Вопрос 1:
Почему это невозможно?

Вопрос 2:
Что может быть похожим решением для этого?

Пример

 data class A(val data1 : String)

 data class B(val data2 : String) : A()

Как я могу добиться этого в kotlin? любая помощь

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Единственное решение для этого, когда вам нужно два класса данных, - это создать еще один абстрактный класс и вывести из него эти два класса данных.Вы должны заметить, что класс данных в kotlin создает хэш-код, equals и toString и другие методы, основанные на первичном конструкторе, и поэтому вам необходимо переопределить поля из базового класса в конструкторе класса данных.

abstract class Base(open val data1: String)

data class A(override val data1: String): Base(data1)

data class B(override val data1: String,  val data2: String): Base(data1)
0 голосов
/ 16 апреля 2019

вы должны сделать, как показано ниже.

abstract class A(open val data1 : String) {}

data class B(val data2 : String) : A(data1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...