这引发了错误:线程“main” java.lang.IllegalArgumentException中的异常:没有枚举常量Color.red
enum class Color(val value: String = "") {
RED("red"),
YELLOW("yellow"),
BLUE("blue")
}
fun main() {
print(Color.valueOf("red"))
}
Run Code Online (Sandbox Code Playgroud)
仅当我将 print 语句更改为:
print(Color.valueOf("RED"))
Run Code Online (Sandbox Code Playgroud)
是否可以使用自定义字符串通过 valueOf 分配给枚举值?
gid*_*dds 11
正如您所发现的,枚举valueOf()方法通过枚举常量的名称进行查找,而不是通过您添加的任何属性进行查找。
但是您可以使用您想要的任何标准轻松添加自己的查找方法:
enum class Color(val hue: String) {
RED("red"),
YELLOW("yellow"),
BLUE("blue");
companion object {
fun forHue(hue: String) = values().find{ it.hue == hue }
}
}
Run Code Online (Sandbox Code Playgroud)
调用按预期Color.forHue("red")返回实例。Color.RED
(这可能是最简单的方法,但不是最有效的;请参阅诸如此类的答案。)
| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |