Как мне сформировать список свойств типа с моим собственным типом

Я пытаюсь сформировать ниже окончательный код Котлин

val participants: List<AbstractParty>

Я попытался использовать приведенный ниже код в kotlinpoet, но он показывает ошибку, я думаю, что это не правильно, но не знаю, как мне это исправить. Кто-нибудь может помочь? Благодарю.

PropertySpec.builder("participants", List<ClassName("AbstractParty">)

2 ответа

Решение

В зависимости от того, есть ли у вас ссылка на класс или вам нужно создать его имя из Strings, вы можете сделать это:

PropertySpec.builder("participants",
     ParameterizedTypeName.get(List::class, AbstractParty::class)
).build()

Или это:

PropertySpec.builder("participants",
    ParameterizedTypeName.get(
            List::class.asClassName(),
            ClassName("some.pckg.name", "AbstractParty"))
).build()

Подсказка для выяснения такого рода вещей: KotlinPoet имеет довольно обширные тесты, вы можете найти примеры почти всего там.

Вы можете использоватьparameterizedBy()расширение:

      PropertySpec.builder(
    "participants",
    List::class.asClassName().parameterizedBy(ClassName("some.pckg.name", "AbstractParty")
).build()

https://square.github.io/kotlinpoet/1.x/kotlinpoet/kotlinpoet/com.squareup.kotlinpoet/-parameterized-type-name/-companion/parameterized-by.html

Другие вопросы по тегам