Kotlin-如何找到类的精确示例

bnl4lu3b  于 2022-12-13  发布在  Kotlin
关注(0)|答案(1)|浏览(132)
sealed class Mission(open val quests: List<Quest>) {
sealed class SubMission(override val quests: List<Quest>) : Mission(quests) {
    data class Mission1(override val quests: List<Quest>): SubMission(quests) 
    data class Mission2(override val quests: List<Quest>): SubMission(quests) 
    data class Mission3(override val quests: List<Quest>): SubMission(quests) 
} }

我的代码中有这个结构和一个List<Mission>
然后使用下面的一个函数,我希望列表返回一个与函数中给定的类完全匹配的项。
private fun getMission(currentMissionClass: KClass<Mission>): Mission {}
假设我给了函数参数Mission.SubMission.Mission1(),并且期望函数返回List<Mission>中与这个类完全匹配的项,在Kotlin中有没有简单方便的方法来实现这个目的?

mbyulnm0

mbyulnm01#

filterIsInstance应该可以正常工作

private inline fun <reified T: Mission> getMission(
    list: List<Mission>, currentMissionClass: Class<T>): List<T> {
    return list.filterIsInstance<T>()
}

getMission(list, Mission1::class.java)

相关问题