web-dev-qa-db-ja.com

Kotlin拡張関数が突然APIレベル24を必要とする

このlintエラーに気づきました:

呼び出しにはAPIレベル24が必要です(現在の最小値は19です)Java.util.map#foreach

kotlinのMutableMapで拡張関数forEachを使用する場合。私がその行を書いたとき、これは起こりませんでしたが、今はそこにあります。そして、他のマシンではこのエラーは表示されません。

15

使用しているのは_kotlin.collections.MutableMap.forEach_ではありません。

使用しているのは、Java 8の_Map.forEach_のようです。

この記事を読む: http://blog.danlew.net/2017/03/16/kotlin-puzzler-whose-line-is-it-anyways/

これはよくある間違いのようです。

Java 8は、Android APIレベル24から十分にサポートされています。

要するに、map.forEach { t, u -> Log.i("tag", t + u) }のように使用しないでください。
map.forEach { (t, u) -> Log.i("tag", t + u) }のように使用します。
(2つのパラメーターではありません。ペアである1つのパラメーターのみです。)

43
Naetmul

Map.forEachはJava 8でサポートされ、Android API24から開始されました。

0
Shinoo Goyal