Kotlin:检查列表是否具有特定类型的对象

Muk*_*rov 2 inheritance class list kotlin

我有一个界面:

interface Change
Run Code Online (Sandbox Code Playgroud)

和一个功能:

 fun test (listOfChanges: List<Change>)
Run Code Online (Sandbox Code Playgroud)

和实现Change接口的此类:

 class MyChange :Change
Run Code Online (Sandbox Code Playgroud)

如何检查是否listOfChangesMyChange类元素?

喜欢: if(listOfchanges.contains(MyChange::class)

jsa*_*mol 6

您可以使用any()

listOfChanges.any { it is MyChange }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。那 `listOfChanges.filterIsInstance(MyChange::class.java).isNotEmpty()` 呢?哪种方法会见效更快? (2认同)
  • @MukhamedaliZhadigerov`any()`和`filterIsInstance()`都将遍历列表。但是,在找到第一个与给定谓词匹配的元素之后,any()立即返回,而filterIsInstance()始终迭代直到列表末尾来存储结果。filterIsInstance()也会创建一个新列表。因此,“ any()”似乎更适合您的情况。 (2认同)