@pqgg7nwkd4

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

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


Есть встроенная функция enumValues для этого, но она с reified параметром, в который нельзя передать такой параметр.
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 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


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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект