Kotlin - nullable属性默认为null值

kos*_*cki 2 nullable properties kotlin

假设我定义了一个具有可空属性的类

class ABC {
   var myProperty: String? = null
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将其默认为空值?也许类似于SCALA?

var myProperty: String? = _  // compilation error
Run Code Online (Sandbox Code Playgroud)

或者干脆:

var myProperty: String?  // compilation error
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用一个来自Kotlin 1.2 的lateinit变量,可以稍后检查启动,如下所示:

lateinit var myProperty: String

if (::myProperty.isInitialized) {
   //value is not-null
}
Run Code Online (Sandbox Code Playgroud)

那么晚了首选的方式呢?是否可以默认为空值或者故意省略它?

yol*_*ole 5

Kotlin故意要求您明确初始化所有属性.没有简写语法.对于可空类型的属性,首选方法是不使用lateinit,而是使用null初始化程序声明它.

isInitialized用于方法lateinit的属性被设计为处理复杂的情况下,像资源的清理; 它不打算用作null= null作为财产声明一部分的想要保存的用户的支票的替代品.


Ale*_*hin 5

简短的回答是否定的。
与其他一些语言(Scala、Go)不同,Kotlin 并不认为它最了解类型的默认值是什么(谁说 int 应该是 0?)