Kotlin mutableMap.put返回可空

vac*_*ach 2 nullable kotlin

在kotlin标准库中,我们有MutableMap具有此方法的接口

public abstract fun put(key: K, value: V): V?
Run Code Online (Sandbox Code Playgroud)

如果它不接受可空的值,为什么它会返回可空值?它是为java互操作完成的吗?

Ron*_*Dev 7

看看定义

/**
 * Associates the specified [value] with the specified [key] in the map.
 *
 * @return the previous value associated with the key, or `null` if the key was not present in the map.
 */
public fun put(key: K, value: V): V?
Run Code Online (Sandbox Code Playgroud)

所以

fun main(args: Array<String>) {
    var m: MutableMap<Int, String> = mutableMapOf(Pair(1, "a"))
    val prev1Value = m.put(1, "b")
    val prev2Value = m.put(2, "c")

    println(m)
    println("Previous value of 1 was: $prev1Value")
    println("Previous value of 2 was: $prev2Value")
}
Run Code Online (Sandbox Code Playgroud)

打印:

{1=b, 2=c}
Previous value of 1 was: a
Previous value of 2 was: null
Run Code Online (Sandbox Code Playgroud)