可空值的 KClass 参考
KClass reference for nullable values
在 Kotlin 中,当声明获取类型的 KClass 时,例如 String::class(表示类型为 String 的值),是否有语法指示该值可为空(即表示 String ? 值而不是字符串).
上下文是我正在尝试使用 KotlinPoet 生成 Kotlin 类 但我创建的所有属性(使用 PropertySpec.builder)都不能为空(例如字符串,当我真正想要的是字符串?)。
感谢您的帮助。
没有。 Kotlin 有 Nullable types and Non-Null Types but it does not have a concept of nullable classes and non-null classes. A KType
is a classifier plus nullability where a classifier can be a KClass
.
KotlinPoet 0.1.0 did not have a way to represent nullable types but support for such was added in 0.2.0 通过 TypeName.asNullable
。例如:
val type = TypeName.get(String::class).asNullable()
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) 顺序,所以升级中断时不要害怕你的代码。
万一有人需要这个:从 KotlinPoet 0.3.0 开始,语法是:
PropertySpec.builder("myVar", String::class.asTypeName().asNullable()).mutable(true).initializer("%S", null)
生产:
var myVar:String? = null
至于 KotlinPoet 1.1.0:
Any::class.asTypeName().copy(nullable = true)
在 Kotlin 中,当声明获取类型的 KClass 时,例如 String::class(表示类型为 String 的值),是否有语法指示该值可为空(即表示 String ? 值而不是字符串).
上下文是我正在尝试使用 KotlinPoet 生成 Kotlin 类 但我创建的所有属性(使用 PropertySpec.builder)都不能为空(例如字符串,当我真正想要的是字符串?)。
感谢您的帮助。
没有。 Kotlin 有 Nullable types and Non-Null Types but it does not have a concept of nullable classes and non-null classes. A KType
is a classifier plus nullability where a classifier can be a KClass
.
KotlinPoet 0.1.0 did not have a way to represent nullable types but support for such was added in 0.2.0 通过 TypeName.asNullable
。例如:
val type = TypeName.get(String::class).asNullable()
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) 顺序,所以升级中断时不要害怕你的代码。
万一有人需要这个:从 KotlinPoet 0.3.0 开始,语法是:
PropertySpec.builder("myVar", String::class.asTypeName().asNullable()).mutable(true).initializer("%S", null)
生产:
var myVar:String? = null
至于 KotlinPoet 1.1.0:
Any::class.asTypeName().copy(nullable = true)