gpt4 book ai didi

kotlin - Kotlin 是否允许您为枚举分配自定义值?

转载 作者:行者123 更新时间:2023-12-02 12:18:04 27 4
gpt4 key购买 nike

这是抛出错误:线程“main”中的异常 java.lang.IllegalArgumentException: 没有枚举常量 Color.red

enum class Color(val value: String = "") {
RED("red"),
YELLOW("yellow"),
BLUE("blue")
}

fun main() {
print(Color.valueOf("red"))
}

仅当我将打印语句更改为:
   print(Color.valueOf("RED"))

是否可以使用自定义字符串使用 valueOf 分配给枚举值?

最佳答案

正如您所发现的,枚举 valueOf()方法按枚举常量的名称查找,而不是按您添加的任何属性查找。

但是您可以使用您想要的任何标准轻松添加自己的查找方法:

enum class Color(val hue: String) {
RED("red"),
YELLOW("yellow"),
BLUE("blue");

companion object {
fun forHue(hue: String) = values().find{ it.hue == hue }
}
}

调用 Color.forHue("red")返回 Color.RED实例如预期。

(这可能是最简单的方法,但不是最有效的;请参阅诸如 this 之类的答案。)

关于kotlin - Kotlin 是否允许您为枚举分配自定义值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54917173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com