fix get interfaces of class

fix get interfaces of class
This commit is contained in:
qingyu
2023-05-05 23:29:15 +08:00
committed by GitHub
parent 9f24bffedc
commit 1bb2c4e5a2

View File

@@ -146,7 +146,20 @@ infix fun Class<*>?.notExtends(other: Class<*>?) = extends(other).not()
*/
infix fun Class<*>?.implements(other: Class<*>?): Boolean {
if (this == null || other == null) return false
return interfaces.takeIf { it.isNotEmpty() }?.any { it.name == other.name } ?: false
return getAllInterfaces().takeIf { it.isNotEmpty() }?.any { it.name == other.name } ?: false
}
/**
* 获取当前 [Class] 实现的所有接口类
*
* @return [Set]<[Class]<*>>
*/
private fun Class<*>.getAllInterfaces(): Set<Class<*>> {
val interfaces = mutableSetOf(*interfaces)
superclass?.let { superClass ->
interfaces.addAll(superClass.getAllInterfaces())
}
return interfaces
}
/**