val i: java.lang.Integer = null
val o: Option[Int] = Option(i) // This yields Some(0)
将null: java.lang.Integer
转换为Scala Option[Int]
的安全方法是什么?
您正在混合Int
和java.lang.Integer
,因此>
val i: java.lang.Integer = null val o: Option[Int] = Option(i)
隐式转换为
val o: Option[Int] = Option(Integer2int(i))
变成
val o: Option[Int] = Option(null.asInstanceOf[Int])
因此
val o: Option[Int] = Some(0)
如果要使用
java.lang.Integer
,请写
val o: Option[java.lang.Integer] = Option(i)
// o: Option[Integer] = None
这似乎正在发生,因为您正在创建Option
,并一步将其转换为Int
(@ MarioGalic的answer解释了为什么会这样)。