我有一段返回的Java代码,java.lang.Integer它可以是null:
someClass.getMyInteger
但是当我在Scala类中使用它时,我收到此错误:
引起:scala.Predef $ .Integer2int的java.lang.NullPointerException(Predef.scala:357)
即斯卡拉隐含试图Java的转换Integer到Scala的Int(使用隐式Integer2int方法),但由于在这种情况下Integer是null 它失败的异常.
如何解决这个问题呢?
Jac*_*eow 14
我会把它包装在一个选项中:
val x = Option(someClass.getMyInteger).map {_.toInt}
Run Code Online (Sandbox Code Playgroud)
例如,
scala> val oneInt: java.lang.Integer = 1
oneInt: Integer = 1
scala> val nullInt: java.lang.Integer = null
nullInt: Integer = null
scala> val oneOpt: Option[Int] = Option(oneInt).map {_.toInt}
oneOpt: Option[Int] = Some(1)
scala> val nullOpt: Option[Int] = Option(nullInt).map {_.toInt}
nullOpt: Option[Int] = None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5734 次 |
| 最近记录: |