Hi! Is it possible to create an extension on enum ...
# announcements
m
Hi! Is it possible to create an extension on enum to get a random value. I have severals enum and for my test, I want to get a random value of this enum. Is it possible?
d
Copy code
inline fun <reified E : Enum<E>> randomValue(): E {
    return randomValue(E::class.java)
}

fun <E : Enum<E>> randomValue(cls: Class<E>): E {
    return cls.enumConstants.random()
}
Usage:
Copy code
val rnd = randomValue<Foo>()
// or
val rnd = randonValue(Foo::class.java)
m
Exactly what I want! thanks!
m
YourEnumClass.values().withIndex().shuffled().first().value
d
That is way slower.
d
enumValues<E>().let { it[Random.nextInt(size)] }