KClass引用可为null的值

在Kotlin中,当声明获取类型的KClass(如String :: class(它表示值类型为String的类型))时,是否有语法表示该值为空(即表示String?值而不是String) 。

上下文是我试图使用KotlinPoet生成Kotlin类,但我创建的所有属性(与PropertySpec.builder)是不可空的(字符串例如,当我真正想要的是字符串?)。

谢谢你的帮助。

不,Kotlin有Nullable类型和Non-Null类型,但是它没有可以为null的和非null 的概念。 一个KType是一个分类器加可空性,其中一个分类器可以是一个KClass

KotlinPoet 0.1.0没有办法来表示可以为空的类型,但支持这样的是通过TypeName.asNullable在0.2.0中添加的。 例如:

 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()调用增加了对可空类型的支持。 例如:

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

将创建:

 val name: java.lang.String? 

请注意,正如发行说明中提到的,0.2.0中的一些函数签名已经从(type,name)顺序翻转为使用(name,type)顺序,因此升级时破坏代码时不要害怕。