0

这是我面临错误的代码:-

有趣的主要(){

val nullList = listOf(1, 3, null, "chair", "table", null) 

val nullArrayList = arrayListOf("this", "house", null, 3, 9) 

println("This list without the null values is ${nullList.filterNotNull()}")

println("This array without the null values is ${nullArrayList.filterNotNull()}")

}

4

1 回答 1

0

答案就在问题本身:

在您的问题中,您直接提供了 和 的元素nullList列表nullArrayList。由于您没有提供任何类型,它会尝试自动推断数组的类型(这就是推断的意思)。您可以在 IDE 提示中看到这一点:

ide提示图片

你可以看到它已经推断出类型:ArrayList<out {Comparable*>? & java.io.Serializale?}>

现在,当您尝试触发 :filterNotNull时,它会发现推断类型根本没有可用的方法。

所以,一个快速的方法可以绕过这个问题来使用Any?并且让编译器忽略一些错误。从长远来看,不建议这样做,但现在应该没问题。

解决方案 :

fun main(){

    val nullList = listOf<Any?>(1, 3, null, "chair", "table", null)

    val nullArrayList = arrayListOf<Any?>("this", "house", null, 3, 9)

    println("This list without the null values is ${nullList.filterNotNull()}")

    println("This array without the null values is ${nullArrayList.filterNotNull()}")
}
于 2021-09-28T16:24:24.713 回答