ana*_*mar 11 scala optional scala-java-interop
val i: java.lang.Integer = null
val o: Option[Int] = Option(i) // This yields Some(0)
Run Code Online (Sandbox Code Playgroud)
转换null: java.lang.Integer为 Scala的安全方法是什么Option[Int]?
Mar*_*lic 21
你是混合Int和java.lang.Integer如此
val i: java.lang.Integer = null
val o: Option[Int] = Option(i)
Run Code Online (Sandbox Code Playgroud)
隐式转换为
val o: Option[Int] = Option(Integer2int(i))
Run Code Online (Sandbox Code Playgroud)
变成
val o: Option[Int] = Option(null.asInstanceOf[Int])
Run Code Online (Sandbox Code Playgroud)
因此
val o: Option[Int] = Some(0)
Run Code Online (Sandbox Code Playgroud)
如果你想和 一起工作java.lang.Integer,那么写
val o: Option[java.lang.Integer] = Option(i)
// o: Option[Integer] = None
Run Code Online (Sandbox Code Playgroud)
这似乎正在发生,因为您正在创建Option,并将其转换为Int一步(@MarioGalic 的回答解释了为什么会发生这种情况)。
这做你想要的:
scala> val o: java.lang.Integer = null
o: Integer = null
scala> val i: Option[Int] = Option(o).map(_.toInt)
i: Option[Int] = None
scala> val o1: java.lang.Integer = 1
o1: Integer = 1
scala> val i1: Option[Int] = Option(o1).map(_.toInt)
i1: Option[Int] = Some(1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |