Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kotlin,表示尚未定义的值_Java_Kotlin_Undefined - Fatal编程技术网

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