Kotlin代表了一个未定义的价值

所以关于Kotlin一件大事就是强迫你不要在你的项目中实现Kotlin

什么是替换null想法然后,如果你必须创建一个新的对象Foo()然后填写它的属性(如填写表格) foo.name = "foo"foo.age = 10等等…
然后检查哪些字段没有被赋值并警告用户填写它。

我可以简单地使用? 对variablestypes,并检查是否为空,但这是摆脱Null Pointer Exception的整个想法

在Kotlin有没有一个不确定的领域有什么好的实现。

所以关于Kotlin的一件大事就是强迫你不要在你的项目中实现空想。

不。Kotlin中的“零安全”概念并不意味着消除所有的空值。 其实,甚至完全相反:你现在可以安全地使用空值。 这个想法是防止在运行时调用空引用。 为了达到这个目的,Kotlin迫使你在编译时处理潜在的空值。

我可以简单地使用? 对variablestypes,并检查是否为空,但这是摆脱空指针exception的整个想法

Kotlin的建筑师们为“?”的概念做了很多的努力。 可空types旨在定义一个未定义的状态。 而且因为现在使用空值是安全的,所以像Safe Calls , Elvis Operator或者Safe Casts这样的概念能够有效地处理空值(而不是仅仅把if (a != null)放在它周围)。

处理缺少值的惯用方法是使用空和无效操作。 也就是说,你可以使用java 8的Optional ,但没有理由,因为该语言提供了相同的function。 例如,你可以做

 val anOptional: Optional = Optional.ofNullable(expr) // start with a nullable value .map { o -> someExpression } // map .filter { o -> aBooleanExpression } // filter .orElse(aDefaultValue) // default if empty 

但是kotlin使用无效操作提供相同的function:

 val aNullable: Foo? = expr // start with a nullable value ?.let { o -> someExpression } // map ?.takeIf { aBooleanExpression } // filter ?: aDefaultValue // default if null