假设我定义了一个具有 nullable 属性的类
class ABC {
var myProperty: String? = null
}
有没有办法将其默认为空值?也许类似于SCALA?
var myProperty: String? = _ // compilation error
或者干脆:
var myProperty: String? // compilation error
我知道我们可以使用一个来自Kotlin 1.2的 lateinit 变量,可以稍后检查启动,如下所示:
lateinit var myProperty: String
if (::myProperty.isInitialized) {
//value is not-null
}
那么晚了首选的方式呢?是否可以默认为空值或者故意省略它?
3 回答
简短的回答是否定的 .
与其他一些语言(Scala,Go)不同,Kotlin并不认为它最清楚该类型的默认值是什么(谁说它对int来说应该是0?)
Kotlin故意要求您明确初始化所有属性 . 没有简写语法 . 对于可空类型的属性,首选方法不是使用
lateinit
,而是使用null
初始化程序声明它 .lateinit
属性的isInitialized
方法旨在处理复杂的情况,如清理资源;它不打算用作想要保存写入= null
作为 property 声明一部分的用户的null
检查的替代品 .您还可以声明一个全局函数
并使用它
由于语言中只有一个空引用,因此全局变量也可以使用
附: - 遗憾的是像'_'这样的空间字符在Kotlin中保留,所以你不能用它来命名你的变量并创建
var myProperty = _