Получить список значений перечисления в Kotlin для переменной Any - PullRequest
0 голосов
/ 02 февраля 2020

Как я могу получить список значений перечисления в Kotlin для переменной любого типа? Существует множество вопросов о том, как напечатать список значений enum, но все они начинаются с известного класса enum. Как я могу получить список значений перечисления для переменной, которая является перечислением?

    import kotlin.reflect.full.isSubclassOf    
enum class Direction { NORTH, SOUTH, WEST, EAST }
enum class Days { MON, TUE, WED, THU, FRI, SAY, SUN }

fun main(){
    val x1: Any = Direction.NORTH
    val x2: Any = Days.TUE
    val x3: Any = 100.0

    printEnumValues(x1)// should print NORTH, SOUTH, WEST, EAST
    printEnumValues(x2)// should print MON, TUE, WED, THU, FRI, SAY, SUN 
    printEnumValues(x3)// should print nothing.
}

fun printEnumValues(arg : Any)
{
    if (arg::class.isSubclassOf(Enum::class)){
        // How to get and print the list of possible enum values here?
    }
}

1 Ответ

2 голосов
/ 02 февраля 2020

Я не знаю, можно ли это сделать с помощью Kotlin отражения, но вы можете позаимствовать Java отражение, чтобы сделать это следующим образом:

fun printEnumValues(arg: Any) {
  if (arg is Enum<*>) {
    println(arg::class.java.enumConstants.joinToString())
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...