Вы смешиваете 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