【发布时间】:2023-03-04 13:19:01
【问题描述】:
我是 kotlin 新手,所以我的问题需要一些关键字。
这是我的 kotlin 代码:
fun foo(map: Map<String, Int>) {
map.forEach {
println(it.value.toString())
}
}
这个 sn-p 在调用时会导致 NPE,如下所示:
fun main() {
val map = mapOf("bar" to null) as Map<String, Int>
foo(map)
}
- 我不知道为什么这个转换
mapOf("bar" to null) as Map<String, Int>没有编译错误。 - 不知道为什么函数
foo在没有编译错误或警告或!!时会导致 NPE
我确定有类似的问题,但我找不到问题或任何关键词。
其实我用的是这张地图:
val objectMapper = jacksonObjectMapper()
val string = """
{ "value": null }
""".trimIndent()
// this is an example, origin string comes from RESTAPI input.
val convertedMap: Map<String, String> = objectMapper.readValue(string)
它没有发出任何警告,它导致了 NPE。 我需要一些使用 kotlin Map/List 的提示,以免出现意外错误。
【问题讨论】:
-
你会收到一个警告,告诉你这是一个不安全的演员阵容。
-
虽然
readValue有suppressWarnings..
标签: kotlin type-safety