diff --git a/src/main/java/ext/Ext.kt b/src/main/java/ext/Ext.kt index e18bec70..781948af 100644 --- a/src/main/java/ext/Ext.kt +++ b/src/main/java/ext/Ext.kt @@ -83,7 +83,9 @@ annotation class SettingField( // Reflection @Suppress("UNCHECKED_CAST") -fun KClass.vars() = declaredMemberProperties.sortedBy { it.javaField?.declaringClass?.declaredFields?.indexOf(it.javaField) ?: Int.MAX_VALUE }.mapNotNull { it as? Var } +fun KClass.ownVars() = declaredMemberProperties.sortedBy { it.javaField?.declaringClass?.declaredFields?.indexOf(it.javaField) ?: Int.MAX_VALUE }.mapNotNull { it as? Var } +@Suppress("UNCHECKED_CAST") +fun KClass.vars(): List> = supertypes.mapNotNull { it.classifier as? KClass<*> }.filter { !it.java.isInterface }.flatMap{ it.vars() as List> } + ownVars() fun KClass.varsMap() = vars().associateBy { it.name } fun KClass.getters() = java.methods.filter { it.name.startsWith("get") } fun KClass.gettersMap() = getters().associateBy { it.name.removePrefix("get").firstCharLower() }