Ссылка KClass для значений с нулевым значением

В Kotlin, объявляя получение KClass для типа, например String :: class (который представляет значения, тип которых будет String), существует синтаксис, указывающий на то, что значение равно null (т. Е. Представляют значения String? Вместо String) ,

Контекст заключается в том, что я пытаюсь создать классы Kotlin с использованием KotlinPoet, но все свойства, которые я создаю (с PropertySpec.builder), не могут быть нулевыми (например, String, когда я действительно хочу, это String?).

Спасибо за вашу помощь.

    Нет. Kotlin имеет типы Nullable и Non-Null, но в нем нет понятия классов с нулевым значением и непустых классов . KType – это классификатор плюс nullability, где классификатор может быть KClass .

    KotlinPoet 0.1.0 не имел возможности представлять типы с нулевым значением, но поддержка для таких была добавлена ​​в 0.2.0 через TypeName.asNullable . например:

     val type = TypeName.get(String::class).asNullable() 

    В случае, если кому-то это нужно: с KotlinPoet 0.3.0 синтаксис:

     PropertySpec.builder("myVar", String::class.asTypeName().asNullable()).mutable(true).initializer("%S", null) 

    производить :

     var myVar:String? = null 

    KotlinPoet 0.2.0 только что был выпущен и добавлен поддержка типов с asNullable() значением через asNullable() . Например:

     PropertySpec.builder("name", TypeName.get(String::class).asNullable()).build() 

    … будет создавать:

     val name: java.lang.String? 

    Обратите внимание, что в примечаниях к выпуску упоминаются некоторые сигнатуры функций в версии 0.2.0 из (тип, имя) для использования (имя, тип) вместо этого, поэтому не бойтесь, когда обновление прерывает ваш код.