val i: java.lang.Integer = null
val o: Option[Int] = Option(i) // This yields Some(0)
What is the safe wa
You are mixing Int
and java.lang.Integer
so
val i: java.lang.Integer = null
val o: Option[Int] = Option(i)
implicitly converts to
val o: Option[Int] = Option(Integer2int(i))
which becomes
val o: Option[Int] = Option(null.asInstanceOf[Int])
thus
val o: Option[Int] = Some(0)
If you want to work with java.lang.Integer
, then write
val o: Option[java.lang.Integer] = Option(i)
// o: Option[Integer] = None