Cha*_*har 5 java collections android kotlin
我在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)
}
Run Code Online (Sandbox Code Playgroud)
一切都在运行时一切正常,但是我的CI构建失败,并出现以下lint错误:
MyActivity.kt:142: Error: Call requires API level 24 (current min is 16): java.util.Map#forEach [NewApi]
uris.forEach {
~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我知道在最小sdk为24之前我们无法将JDK-8的Map用于Android项目。但是为什么lint将其视为JDK-8的Map?
有关更多信息,我尝试从AS的Kotlin Bytecode选项中获取Java代码,并发现forEach已按预期被while循环和迭代器替代。
那么可能是什么原因以及如何解决这个问题?任何线索将不胜感激。
上有两个重载foreach的Map:
Kotlin一:
uris.forEach { (key, value) -> // Do some Action }
Run Code Online (Sandbox Code Playgroud)
Java8之一:
uris.forEach { key, value -> // Do some Action }
Run Code Online (Sandbox Code Playgroud)
令人困惑,不是吗?
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |