检查Scala中Java数据类型的null值
我调用了Scala代码,它提供了Java检查Scala中Java数据类型的null值,scala,Scala,我调用了Scala代码,它提供了JavaDouble类型,可以是null如何在Scala代码中检查null值和非null值 val myJavaDoubleValue: Double = thirdpartyCall.collectValue() if(myJavaDoubleValue == null) { println("Is NULL") } else { println("Is NOT NULL") } 关于以Scala方式执行此操作的任何建议?请使用以下选项: val my
Double
类型,可以是null
如何在Scala代码中检查null值和非null值
val myJavaDoubleValue: Double = thirdpartyCall.collectValue()
if(myJavaDoubleValue == null) {
println("Is NULL")
} else {
println("Is NOT NULL")
}
关于以Scala方式执行此操作的任何建议?请使用以下选项:
val myJavaDoubleValue: Option[Double] = Option(thirdpartyCall.collectValue())
如果结果为空,上述操作将导致None
,否则将导致Some(actualValue)
请参见Scala以与Java相同的方式支持
null
。因此,您的代码在语法上是正确的
然而,一种更现代的方法是确保您的代码几乎永远不会触及null
值。为了做到这一点,一种可能的方法是使用Scala类。选项[T]
是一个可以定义也可以不定义的值。已定义的选项由Some[T]
表示,而未定义的选项由None
表示
选项(thirdpartyCall.collectValue())
将返回一个选项[Double]
。检查选项中包含的值有多种方法,Scala惯用的方法之一是:
但是,选项
的功能要强大得多。它支持像map
、flatMap
和fold
这样的方法,这些方法可以让您更加富有表现力,例如:
def optionIsDefined[A](a: A) = Option(a).fold("not defined") { value => s"defined with value: $value" }
scala> optionIsDefined(42)
res2: String = defined with value: 42
scala> optionIsDefined(null)
res3: String = not defined
是关于选项
的优秀新手友好指南
def optionIsDefined[A](a: A) = Option(a).fold("not defined") { value => s"defined with value: $value" }
scala> optionIsDefined(42)
res2: String = defined with value: 42
scala> optionIsDefined(null)
res3: String = not defined