我期待着一些字符串值,我需要找到,如果我有相应的枚举值定义.

我的枚举值是

enum class Status {
    Created, Updated
}

我想在这个函数中实现的是判断这些枚举值是否匹配,忽略大小写

private fun getStatus(
        value: String
    ): Status {
        ....
    }

如果没有匹配,那么我想抛出一个错误.

非常感谢您的帮助!!

推荐答案

Enum.valueOfenumValueOf<Enum>等枚举的内置函数区分大小写,但您可以轻松编写自己的不区分大小写版本:

inline fun <reified T : Enum<T>> enumValueOfIgnoreCase(key: String): T =
    enumValues<T>().find { it.name.equals(key, ignoreCase = true) }
        ?: throw IllegalArgumentException("no value for key $key")

然后,您可以编写以下内容以获得Status元素Created:

val status = enumValueOfIgnoreCase<Status>("created")

Kotlin相关问答推荐

如何使用具有名称冲突的限定这个?

创建具有共同父类型的两种不同类型对象的列表的最有效方法是什么?

Android前台服务 list —Altbeacon

如何在Kotlin中为接受varargs的函数添加带有默认值的新参数?

MyType.()在 Kotlin 中是什么意思?

如何使用函数类型或 lambdas 作为 Kotlin 上下文接收器的类型?

为什么这个 Kotlin 代码不起作用? (如果 str[index] 在列表中,则打印)

如何缩短 MaterialTheme.colors.primary?

找不到引用的类 kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck

如何创建 Kotlin DSL - DSL 语法 Kotlin

retrofit 响应代码 405 并带有消息method not allowed here

Kotlin 类的调用方法

从代码块执行和返回(在 Elvis 运算符之后)

防止导航到同一个片段

如何在 Kotlin 中传递有界通配符类型参数?

使用范围的稀疏sparse值列表

如何让数据类在Kotlin中实现接口/扩展超类属性?

Kotlin out-projected 类型禁止使用

IllegalStateException:function = , count = 3, index = 3

如何在 Kotlin 中按字母顺序对字符串进行排序