我有我的Java枚举,如:FOO("foo")
,BAR("bar")
... ,我有一个getValue()
方法返回值"foo"
和枚举的"bar"
,这必须是在Java中。Scala的模式匹配的Java枚举值
在另一方面,我得在Scala中匹配这样的:
result match {
case "foo" =>
我试图做的事:
result match {
case Enum.FOO.getValue() =>
我得到这个错误:
method getValue is not a case class constructor, nor does it have an
unapply/unapplySeq method
我我不太确定这里发生了什么,因为我的getValue()
方法返回String
,所以我为什么不能使用它r模式匹配?谢谢
如果这是一个枚举,为什么只是没有做的情况下对枚举值,而不是他们的“字符串表示”自己?否则,您总是可以创建一个“反向查找”方法,它将从其字符串表示形式 – fge
返回枚举值,结果来自数据库,并且它是String类型并匹配enum的字符串rep。我想在这里匹配字符串值,所以我不认为反向查找会起作用,不是吗?你能告诉我一些例子吗?干杯 – Duc
等一下。在你的Scala代码中,'match'是一个'String'。到现在为止还挺好。每个'病例'需要什么治疗?难道它不是在枚举本身的方法实现吗? – fge