在 Kotlin 中获取 Any 变量的枚举值列表



如何在 Kotlin 中检索任何类型的变量的枚举值列表?关于如何打印枚举值列表有很多问题,但这些问题都是从已知的枚举类开始的。如何获取作为枚举的变量的枚举值列表?

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?
}
}

我不知道是否可以用 Kotlin 反射来完成,但你可以借用 Java 反射来做到这一点:

fun printEnumValues(arg: Any) {
if (arg is Enum<*>) {
println(arg::class.java.enumConstants.joinToString())
}
}

最新更新