Java Kotlin,表示尚未定义的值
因此,Java Kotlin,表示尚未定义的值,java,kotlin,undefined,Java,Kotlin,Undefined,因此,Kotlin的重要之处在于它迫使您在项目中不实施null思想 那么,如果您必须创建一个新对象Foo(),然后填写它的属性(例如填写表单),那么如何替换null想法呢 foo.name=“foo”,foo.age=10,等等。。。 然后检查哪些字段没有赋值,并警告用户填写 我可以简单地在变量类型上使用?,并检查它是否为null,但这与消除null指针异常的整个想法背道而驰 Kotlin中是否有未定义的字段的良好实现 因此,Kotlin的一大特点是它迫使您不要在项目中实现空想法 不。Kotl
Kotlin
的重要之处在于它迫使您在项目中不实施null
思想
那么,如果您必须创建一个新对象Foo()
,然后填写它的属性(例如填写表单),那么如何替换null
想法呢
foo.name=“foo”
,foo.age=10
,等等。。。
然后检查哪些字段没有赋值,并警告用户填写 我可以简单地在变量类型上使用
?
,并检查它是否为null,但这与消除null指针异常的整个想法背道而驰
Kotlin中是否有未定义的字段的良好实现
因此,Kotlin的一大特点是它迫使您不要在项目中实现空想法
不。Kotlin中的“空安全”概念并不意味着消除所有空值。实际上,甚至恰恰相反:您现在可以安全地使用空值。其思想是防止在运行时调用空引用。为了实现这一点,Kotlin强制您在编译时处理潜在的空值
我可以简单地使用?在变量类型上,检查它是否为null
但这与去掉空指针的想法背道而驰
例外情况
Kotlin的建筑师们已经在“?”的概念上投入了大量的精力。可空类型用于定义未定义的状态。因为现在使用空值是安全的,所以有一些概念,比如,或者有效地处理空值(而不仅仅是在其周围放置if(a!=null)
。处理缺少值的惯用方法是使用空值和空值安全操作。也就是说,您可以使用Java8的可选
,但没有理由这样做,因为该语言提供了等效的功能。例如,你可以
val anOptional: Optional<Foo> =
Optional.ofNullable(expr) // start with a nullable value
.map { o -> someExpression } // map
.filter { o -> aBooleanExpression } // filter
.orElse(aDefaultValue) // default if empty
我很高兴听到我投赞成票。似乎有一些人在SO上系统地否决了Kotlin的问题,所以它不是“不要使用null”
它的“现在使用null是安全的”
即使使用null是安全的,如果你尽可能避免使用它,你的代码可能会看起来更好。例如,当属性具有良好的默认值时。
val aNullable: Foo? =
expr // start with a nullable value
?.let { o -> someExpression } // map
?.takeIf { aBooleanExpression } // filter
?: aDefaultValue // default if null