说我有这样的枚举:
object Enm extends Enumeration {
val ONE, TWO, THREE = Value
}
并且我可以通过调用Enm.withName("ONE")
上的名字来获得令人反感的结果,但如果我有参数值,请说:
object Enm extends Enumeration {
val ONE = Value("1")
val TWO = Value("2")
val THREE = Value("3")
}
致电Enm.withName("ONE")
我现在回过头来注意,因为现在" 1"," 2"等等。
有可能以某种方式获得val名称而不是我在Value中输入的名称吗?
答案 0 :(得分:1)
Hacky解决方案
将Map
字符串保存到数字字符串映射
object Enm extends Enumeration {
val ONE = Value("1")
val TWO = Value("2")
val THREE = Value("3")
val map = Map ("ONE" -> "1", "TWO" -> "2", "THREE" -> "3")
}
//Usage
Enm.withName(Enm.map("ONE"))
您无法覆盖withName
方法,因为它是final
。所以编写一个自定义的withName方法
object Enm extends Enumeration {
val ONE = Value("1")
val TWO = Value("2")
val THREE = Value("3")
private val map = Map ("ONE" -> "1", "TWO" -> "2", "THREE" -> "3")
def customWithName(str: String) = withName(map(str))
}
//Usage
Enm.customWithName("ONE")