Scala Option(null)预期为None,但我得到Some(0)

问题描述 投票:0回答:2
val i: java.lang.Integer = null
val o: Option[Int] = Option(i) // This yields Some(0)

null: java.lang.Integer转换为Scala Option[Int]的安全方法是什么?

scala optional
2个回答
2
投票

您正在混合Intjava.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

1
投票

这似乎正在发生,因为您正在创建Option,并一步将其转换为Int(@ MarioGalic的answer解释了为什么会这样)。

© www.soinside.com 2019 - 2024. All rights reserved.