【发布时间】:2023-03-30 09:41:01
【问题描述】:
java.util.concurrent.ConcurrentMap 的 putIfAbsent 文档对返回类型进行了如下说明:
与指定键关联的前一个值,如果该键没有映射,则为 null。
在 Scala 2.10.4 上,我尝试调用 putIfAbsent(Int, Int),即使用 Scala 的 Int 类型。
scala> import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentHashMap
scala> new ConcurrentHashMap[Int, Int]()
res0: java.util.concurrent.ConcurrentHashMap[Int,Int] = {}
scala> val x: Int = 1
x: Int = 1
由于1 不存在于空的ConcurrentHashMap 中,我希望null 从putIfAbsent(x, x) 调用中返回。
scala> res0.putIfAbsent(x, x)
res1: Int = 0
但是,0 被返回。我假设null 被转换为0。
这里到底发生了什么?它正在编译对我来说似乎很奇怪。
【问题讨论】: