filterIsInstance所在位置是kotlin.collections.filterIsInstance,其相關用法介紹如下。

用法一

fun <reified R> Array<*>.filterIsInstance(): List<R>
fun <reified R> Iterable<*>.filterIsInstance(): List<R>

返回一個列表,其中包含作為指定類型參數 R 的實例的所有元素。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
open class Animal(val name: String) {
    override fun toString(): String {
        return name
    }
}
class Dog(name: String): Animal(name)
class Cat(name: String): Animal(name)

val animals: List<Animal> = listOf(Cat("Scratchy"), Dog("Poochie"))
val cats = animals.filterIsInstance<Cat>()

println(cats) // [Scratchy]
//sampleEnd
}

輸出:

[Scratchy]

用法二

fun <R> Array<*>.filterIsInstance(klass: Class<R>): List<R>
fun <R> Iterable<*>.filterIsInstance(
    klass: Class<R>
): List<R>

返回一個列表,其中包含作為指定類實例的所有元素。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
open class Animal(val name: String) {
    override fun toString(): String {
        return name
    }
}
class Dog(name: String): Animal(name)
class Cat(name: String): Animal(name)

val animals: List<Animal> = listOf(Cat("Scratchy"), Dog("Poochie"))
val cats = animals.filterIsInstance(Cat::class.java)

println(cats) // [Scratchy]
//sampleEnd
}

輸出:

[Scratchy]