gpt4 book ai didi

nullpointerexception - 为什么 HashMap.get 不返回可空类型?

转载 作者:行者123 更新时间:2023-12-04 08:20:13 26 4
gpt4 key购买 nike

我对以下示例抛出 NullPointerException 感到有点惊讶:

fun main(args: Array<String>) {
val hm = HashMap<String, Int>()
hm.put("alice", 42)
val x = hm.get("bob")
println(x) // BOOM
}

我以为 Kotlin 代码中没有 NullPointerException

如果我用可选类型注释 x,程序会打印 null:

fun main(args: Array<String>) {
val hm = HashMap<String, Int>()
hm.put("alice", 42)
val x: Int? = hm.get("bob")
println(x) // null
}

我是否发现了一个特例,或者这是 Kotlin/Java 互操作的普遍问题?

我正在使用带有 Kotlin 0.11.91.1 插件的 IntelliJ IDEA 14.1 社区版。

最佳答案

您的变量 hmHashMap 类型,因为这是一个平台类,它的方法返回 platform types . Kotlin自己的Map及其 subtrait 子接口(interface) MutableMap但是为 get() 返回可空类型.

将您的代码更改为

val hm : MutableMap<String, Int> = HashMap()

它会打印“null”。

关于nullpointerexception - 为什么 HashMap.get 不返回可空类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com