@pqgg7nwkd4

Kotlin: как получить список значений неизвестного Enum-а?

Другими словами, как реализовать функцию getEnumValues:
fun getEnumValues(enumClass: KClass<Enum<*>>): Array<Enum<*>>{
 ...
}


Есть встроенная функция enumValues для этого, но она с reified параметром, в который нельзя передать такой параметр.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 2
@pqgg7nwkd4 Автор вопроса
Я ничего умнее этого не придумал :(
fun KClass<out Enum<*>>.enumValues(): Array<Enum<*>> {
    @Suppress("UNCHECKED_CAST")
    return this.java.getMethod("values").invoke(null) as Array<Enum<*>>
}
Ответ написан
Комментировать
GreyTeardrop
@GreyTeardrop
На JVM для этого можно использовать java.lang.Class#getEnumConstants:

fun KClass<out Enum<*>>.enumValues(): Array<out Enum<*>> = this.java.enumConstants


Под капотом он использует ту же самую рефлексию, но кеширует результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы