【问题标题】:Parsing strings to arbitrary enums in Kotlin Multiplatform在 Kotlin Multiplatform 中将字符串解析为任意枚举
【发布时间】: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&lt;MyEnum&gt;("SOME_VALUE")。 MyEnum.valueOf("SOME_VALUE") 对你来说不够用有什么原因吗?
  • 这是库代码,目的是您可以创建一个委托,该委托可以在任何给定点将任意字符串值解析为库用户指定的枚举的枚举值。我突然发现标准库中基本上就是这个方法,所以我就回答我的问题。

标签: kotlin reflection enums kotlin-multiplatform


【解决方案1】:

我自己找到了答案,而且相当简单:有一个多平台标准库函数,正是这个签名: enumValueOf().

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多