Kotlin扩展函数突然需要api level 24

时间:2017-06-25 23:21:00

标签: android kotlin kotlin-extension

我刚注意到这个lint错误:

  

调用需要API级别24(当前最小值为19)java.util.map#foreach

当我在Kotlin的MutableMap上使用扩展函数forEach时。 当我写这条线时没有发生这种情况,但现在就在那里。 我在其他机器上没有看到这个错误。

3 个答案:

答案 0 :(得分:33)

您使用的不是kotlin.collections.MutableMap.forEach

您使用的内容似乎是Java 8中的Map.forEach

阅读这篇文章: http://blog.danlew.net/2017/03/16/kotlin-puzzler-whose-line-is-it-anyways/

这似乎是一个常见的错误。

从Android API级别24开始,Java 8得到了很好的支持。

简而言之,请勿使用map.forEach { t, u -> Log.i("tag", t + u) }之类的内容 像map.forEach { (t, u) -> Log.i("tag", t + u) }一样使用。
(不是两个参数。只有一个参数是一对。)

答案 1 :(得分:2)

这也会发生在列表中,即使我正在使用我需要使用:

list.iterator().forEach {}

关键是在 forEach 之前使用 iterator()

答案 2 :(得分:0)

Java 8支持Map.forEach,Android的支持从API 24开始