Hullaballoonatic
08/02/2020, 10:59 PMShawn
08/03/2020, 12:46 AMHullaballoonatic
08/03/2020, 1:59 AMHullaballoonatic
08/03/2020, 2:01 AMAfzal Najam
08/03/2020, 4:06 AMClassName::class.sealedSubclasses[0].nestedClasses
:
sealed class ParentClass {
fun getSubclasses() {
val sealedSubclasses = ParentClass::class.sealedSubclasses
// println(sealedSubclasses.toList().toString())
val nestedClasses = sealedSubclasses[0].nestedClasses
println((nestedClasses.toList()[0].objectInstance as ChildClass.Companion).TEST)
}
class ChildClass : ParentClass() {
companion object {
const val TEST = "test"
}
}
}
ParentClass.ChildClass().getSubclasses()
This does what you want, I think. Not sure if there's way of getting an instance without type-casting and this is only for sealed sub-classes.Afzal Najam
08/03/2020, 4:08 AMval nestedClasses = sealedSubclasses[0].nestedClasses
val nestedClass = nestedClasses.toList()[0]
val members = nestedClass.members.toList()
val testConst = members[0]
println(testConst.call(this))
And get the value of TEST
const. Calling a function might be slightly more difficult.