Consider the following Java class...
public class JavaSuperClassWithInstanceMembers {
private final int superClassReadonlyProperty = 0;
private int superClassMutableProperty = 0;
public int getSuperClassReadonlyProperty() {
return superClassReadonlyProperty;
}
public int getSuperClassMutableProperty() {
return superClassMutableProperty;
}
public void setSuperClassMutableProperty(int value) {
superClassMutableProperty = value;
}
public void superClassInstanceFunction() {
}
}
Now lets get its memberProperties...
println(JavaSuperClassWithInstanceMembers::class.memberProperties)
val test.JavaSuperClassWithInstanceMembers.superClassReadonlyProperty: kotlin.Int,
var test.JavaSuperClassWithInstanceMembers.superClassMutableProperty: kotlin.Int
Now consider the following Kotlin class. Notice that it extends the Java class (above)...
class KotlinSubClassWithInstanceMembers : JavaSuperClassWithInstanceMembers() {
val subClassReadonlyProperty: Int
get() = 0
var subClassMutableProperty: Int
get() = 0
set(value: Int) {}
fun subClassInstanceFunction() {}
}
Now lets get its memberProperties...
println(KotlinSubClassWithInstanceMembers::class.memberProperties)
var test.KotlinSubClassWithInstanceMembers.subClassMutableProperty: kotlin.Int,
val test.KotlinSubClassWithInstanceMembers.subClassReadonlyProperty: kotlin.Int
According to the docs:
Returns non-extension properties declared in this class and all of its superclasses.
So why does memberProperties not result in the properties from the Java class too?