有没有办法在Kotlin获得sealed class
的成员数量?
例如,对于这个类,它将是2:
sealed class Foo {
object Bar : Foo()
data class Baz(val m: String) : Foo()
}
答案 0 :(得分:2)
您可以使用kotlin反射api的KClass.nestedClasses。这将返回给定类中声明的所有类(例如,也会列出伴随对象)。
fun countSubclasses(clazz: KClass<*>): Int =
clazz.nestedClasses.filter {
it.isSubclassOf(clazz)
}.size
要调用此功能,请使用
countSubClasses(Foo::class)
有关详细信息,请参阅kotlin reflection reference。
答案 1 :(得分:0)
nestedClasses
的{{1}}属性应该没问题:
KClass