Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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布尔值转换为scala布尔值时出错_Java_Scala - Fatal编程技术网

将可为空的java布尔值转换为scala布尔值时出错

将可为空的java布尔值转换为scala布尔值时出错,java,scala,Java,Scala,尝试将可选/可为空的java布尔值读入scala布尔值 我在使用以下方法时出错: [scalac-2.11] /myworkspace/MyClass.scala:43: 错误:类型不匹配;[scalac-2.11]发现:任何[scalac-2.11] 必需:布尔[scalac-2.11]值x:scala.Boolean= 选项(nullableJavaBool.getOrElse(java.lang.Boolean.FALSE) [scalac-2.11] ^[scalac-2.11] /my

尝试将可选/可为空的java布尔值读入scala布尔值

我在使用以下方法时出错:

[scalac-2.11] /myworkspace/MyClass.scala:43: 错误:类型不匹配;[scalac-2.11]发现:任何[scalac-2.11] 必需:布尔[scalac-2.11]值x:scala.Boolean= 选项(nullableJavaBool.getOrElse(java.lang.Boolean.FALSE) [scalac-2.11]
^[scalac-2.11]

/myworkspace/MyClass.scala:43: 错误:类型不匹配;[scalac-2.11]发现:任何[scalac-2.11] 必需:布尔[scalac-2.11]值y:scala.Boolean= 选项(nullableJavaBool).getOrElse(false)


您能解释一下这个错误背后的原因吗?还有什么更好的方法来实现这个错误呢?

问题在于scala使用的类型推断器。问题是,类型推断器有时无法推断出类似选项[T]的更高类型的超类型,尽管用户很清楚它是什么。 与布尔函数一样,它并不像布尔函数那么多的问题,可以考虑这个问题来解释整个问题:

要更正代码,您必须手动输入一些类型:

val nullableJavaBool: java.lang.Boolean = java.lang.Boolean.TRUE
val x:scala.Boolean = (Option(nullableJavaBool).getOrElse[java.lang.Boolean](java.lang.Boolean.FALSE))

顺便说一句,您转换布尔值的方法是可以的,不过如果b==null,那么简单
。。。否则…
将使用更少的资源

@statefi,看起来没有什么不同的问题。
val nullableJavaBool: java.lang.Boolean = java.lang.Boolean.TRUE
val x:scala.Boolean = (Option(nullableJavaBool).getOrElse[java.lang.Boolean](java.lang.Boolean.FALSE))