首页 文章

Kotlin - nullable属性默认为null值

提问于
浏览
2

假设我定义了一个具有 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 回答

  • 4

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

  • 5

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

    lateinit 属性的 isInitialized 方法旨在处理复杂的情况,如清理资源;它不打算用作想要保存写入 = null 作为 property 声明一部分的用户的 null 检查的替代品 .

  • 0

    您还可以声明一个全局函数

    fun nullString(): String? {
        return null
    }
    

    并使用它

    class ABC {
       var myProperty = nullString()
    }
    

    由于语言中只有一个空引用,因此全局变量也可以使用

    var nullString : String? = null
    
    class ABC {
       var myProperty = nullString
    }
    

    附: - 遗憾的是像'_'这样的空间字符在Kotlin中保留,所以你不能用它来命名你的变量并创建 var myProperty = _

相关问题