可为空值的KClass引用

Ant*_*ine 4 kotlin kotlinpoet

在Kotlin中,当声明为类型获取KClass时,例如String :: class(表示其类型为String的值),是否有一种语法来指示该值可以为空(即表示String?值而不是String) .

上下文是我正在尝试使用KotlinPoet生成Kotlin类,但我创建的所有属性(使用PropertySpec.builder)都不可为空(例如String,当我真正想要的是String?)时.

谢谢你的帮助.

mfu*_*n26 7

不.Kotlin具有Nullable类型和非Null类型,但它没有可空和非null 的概念.A KType是分类器加上可空性,其中分类器可以是a KClass.

KotlinPoet 0.1.0没有办法代表可以为空的类型,但是在0.2.0 via 中添加了对这种类型的支持TypeName.asNullable.例如:

val type = TypeName.get(String::class).asNullable()
Run Code Online (Sandbox Code Playgroud)


Ant*_*ine 6

如果有人需要这个:从KotlinPoet 0.3.0开始,语法是:

PropertySpec.builder("myVar", String::class.asTypeName().asNullable()).mutable(true).initializer("%S", null)
Run Code Online (Sandbox Code Playgroud)

生产 :

var myVar:String? = null
Run Code Online (Sandbox Code Playgroud)