Bernhard
07/28/2024, 1:31 PMenum class Values { TEST }
fun <T: Enum<T>> x(clazz: Class<Enum<T>>) = clazz.entries
x(Values::class)
I'm passing it to a superclass so I can't inline
Edit: My goal is to have an interface or some kind of base class that allows me to serialize/deserialize any enum from/to lowercase strings of its nameJoffrey
07/28/2024, 2:12 PMJoffrey
07/28/2024, 2:13 PMBernhard
07/28/2024, 2:13 PMBernhard
07/28/2024, 2:14 PMBernhard
07/28/2024, 2:14 PMBernhard
07/28/2024, 2:14 PMinline fun <reified T : Enum<T>> fromCamelCase(value: String): T? =
enumEntries<T>().find { it.name == value.toEnumConstant() }
fun <T : Enum<T>> Enum<T>.toCamelCase(): String =
name.split("_").joinToString { it.lowercase() }
Bernhard
07/28/2024, 2:15 PMBernhard
07/28/2024, 2:17 PMabstract class BaseApp<E: Enum<E>>(
events: E
) {
fun onEvent(event: String) {
onTypedEvent(parseSomehow(event))
}
fun onTypedEvent(event: E) {}
}
Bernhard
07/28/2024, 2:18 PMJoffrey
07/28/2024, 2:37 PMBernhard
07/28/2024, 2:38 PMBernhard
07/28/2024, 2:38 PMJoffrey
07/28/2024, 2:39 PMJoffrey
07/28/2024, 2:39 PMentries
, or build a simple map to map string values to your enum instancesBernhard
07/28/2024, 2:40 PMBernhard
07/28/2024, 2:40 PMBernhard
07/28/2024, 2:41 PMBernhard
07/28/2024, 2:41 PMBernhard
07/28/2024, 2:42 PMPHondogo
07/28/2024, 8:29 PM