Как я могу инициализировать динамический вложенный объект в kotlin? - PullRequest
0 голосов
/ 05 июля 2018

Я ищу, чтобы создать структуру объекта, которая имеет динамический класс, который я хотел бы изменить:

Верхний уровень:

data class TopLevel(
  var myCustomClass1: MyCustomClass1,
  var myCustomClass2: MyCustomClass2)

Второй уровень:

data class MyCustomClass2(var dynamicClass: DynamicClass)

DynamicClass - это то, что я хочу изменить. Например, я могу использовать DynamicClass или DynamicClass2 в MyCustomClass2.

Каков наилучший способ сделать это с помощью kotlin?

1 Ответ

0 голосов
/ 06 июля 2018

Поскольку Kotlin - это язык статической типизации, вам нужно найти способ описать свой абстрактный класс, например, используя интерфейс:

interface IDynamicClass

class DynamicClass : IDynamicClass
class DynamicClass2 : IDynamicClass

data class MyCustomClass2(var dynamicClass: IDynamicClass)

Это позволяет создавать экземпляр MyCustomClass2 с любым экземпляром, реализующим интерфейс IDynamicClass:

MyCustomClass2(DynamicClass())
MyCustomClass2(DynamicClass2()) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...