gpt4 book ai didi

java - Lint 将 Kotlin MutableMap.forEach() 视为 java.util.Map.forEach()

转载 作者:IT老高 更新时间:2023-10-28 13:47:27 30 4
gpt4 key购买 nike

我在我的 Android 项目中使用 Kotlin 的 MutableMap。并尝试对每个项目执行一些操作。所以这是我的代码。

private val uris: MutableMap<String, Uri> = mutableMapOf()
// ... Fill the items here ...
uris.forEach {
val ref = FirebaseFirestore.getInstanse().reference
uploadFile(ref, it.value)
}

在运行时一切正常,但我的 CI 构建失败并出现以下 lint 错误:

MyActivity.kt:142: Error: Call requires API level 24 (current min is 16): java.util.Map#forEach [NewApi]
uris.forEach {
~~~~~~~

我知道在 min sdk 为 24 之前,我们不能将 JDK-8 的 Map 用于 Android 项目。但是为什么 lint 将其视为 JDK-8 的 Map?

有关更多信息,我尝试从 AS 中的 Kotlin Bytecode 选项获取 Java 代码,发现 forEach 已按预期替换为 while 循环和迭代器。

那么可能是什么原因以及如何解决这个问题?任何线索将不胜感激。

最佳答案

Map上有两个重载的foreach:

Kotlin 一:

uris.forEach { (key, value) -> // Do some Action }

Java8 一:

uris.forEach { key, value -> // Do some Action }

令人困惑,不是吗?

关于java - Lint 将 Kotlin MutableMap.forEach() 视为 java.util.Map.forEach(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437358/

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