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)顺序,因此升级时破坏代码时不要害怕。