Количество членов закрытого класса в Котлине - PullRequest
0 голосов
/ 25 апреля 2018

Есть ли способ получить количество членов sealed class в Котлине? Например, для этого класса это будет 2:

sealed class Foo {
    object Bar : Foo()
    data class Baz(val m: String) : Foo()
}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

nestedClasses свойство KClass должно быть в порядке:

println(Foo::class.nestedClasses.size) //2
0 голосов
/ 25 апреля 2018

Вы можете использовать KClass.nestedClasses API-интерфейса Kotlin. Это возвращает все классы, объявленные в данном классе (например, объект-компаньон также указан).

fun countSubclasses(clazz: KClass<*>): Int =
        clazz.nestedClasses.filter {
            it.isSubclassOf(clazz)
        }.size

Для вызова этой функции используйте

countSubClasses(Foo::class)

Для получения подробной информации см. Ссылка на отражение Котлина .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...