相对于Java,我最喜欢Kotlin的一点是,你可以用编译器来保证某些值永远不会是空的(Swift也有这个功能)。Swift也有这个功能)。
var foo: Thing
var bar: Thing?
是这样的例子。foo
永远不可能是空的。我不需要用防御性的null检查来污染我的代码。另一方面, bar
可能是空的。也有方便的语法来检查东西是否为空,并使用它。
bar?.x // bar.x, or null if bar is null
bar ?: defaultBar // bar, or defaultBar if bar is null
if (bar != null) {
// bar is now Thing here, not Thing? (Assuming bar is a parameter or local variable.)
}
最近Java的发展速度比较快,还增加了一些功能,但是我没有听说过这个东西。是否考虑过并被拒绝了?或者有一天可能会被添加到Java中?