【发布时间】:2021-06-29 15:49:08
【问题描述】:
我想知道是否可以在 Kotlin Multiplatform 中实现如下功能:
inline fun <reified T : Enum<T>> parseToEnum(value: String): T {
// ?
}
基本上,一个函数接受 Enum 的类型和一个字符串,然后返回与传递的字符串 (value) 匹配的 enum T 的枚举值。
我知道这在 Java 中是可能的(因此在 Kotlin/JVM 中),但我担心在常见的多平台代码中可能没有办法做到这一点,因为在运行时保留的反射数据非常少。
如果有办法做到这一点(或类似的功能),请告诉我。
使用 Kotlin 1.5.20(或者一般是最新版本,如果需要我可以更新)
【问题讨论】:
-
你打算如何使用这个功能?据我所知,这将类似于
parseToEnum<MyEnum>("SOME_VALUE")。MyEnum.valueOf("SOME_VALUE")对你来说不够用有什么原因吗? -
这是库代码,目的是您可以创建一个委托,该委托可以在任何给定点将任意字符串值解析为库用户指定的枚举的枚举值。我突然发现标准库中基本上就是这个方法,所以我就回答我的问题。
标签: kotlin reflection enums kotlin-multiplatform