因此,正如标题所示,我需要检查对象是否是从给定类继承的。
我编写了一个函数(下面的代码片段),它检查一个项目是否是给定类的实例,但我想检查它是否是 KView 类的后代,而不是直接子代(如我想要它检查它的祖先,直到找到 KView 或到达根祖先)。
在 Kotlin 中是否可能?如果可以,我可以在
when
子句中使用它吗?
when (item) {
is KRecyclerView -> item.assertWithCondition { isVisibleAndEnabled() }
is KView -> item.assertWithCondition { isVisibleAndEnabled() }
else -> throw IllegalArgumentException("Item has wrong type")
}
这个函数实际上是有效的(发布完整的函数以防其他人需要它),只是我检查了一个项目是否继承自错误的祖先,duh
fun <T>RecyclerActions.scrollToFirstItemFromTop(item: T, shouldExist: Boolean = true) {
run breaking@{
repeat(3) {
ScreenScrollerHelper.scrollForward(100)
val isElementFound =
when (item) {
is KRecyclerView -> item.assertWithCondition { isVisibleAndEnabled() }
is KView -> item.assertWithCondition { isVisibleAndEnabled() }
is KDSLView<*> -> item.assertWithCondition { isVisibleAndEnabled() }
else -> throw IllegalArgumentException("Item has wrong type")
}
if (isElementFound || !shouldExist) {
return@breaking
}
}
}
}