【发布时间】:2014-04-10 11:30:27
【问题描述】:
我有我的 java 枚举,例如:FOO("foo")、BAR("bar") ...
我有一个getValue() 方法来返回枚举的值"foo" 和"bar",这必须在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 那么为什么我不能将它用于模式匹配?谢谢
【问题讨论】:
-
如果这是一个枚举,为什么不在枚举值本身而不是它们的“字符串表示”上做这种情况呢?否则,您总是可以创建一个“反向查找”方法,该方法将从其字符串表示中返回枚举值
-
结果来自 DB,它是 String 类型并且匹配枚举的字符串 rep。我试图在这里匹配字符串值,所以我认为反向查找不会起作用,不是吗?你能给我看一些例子吗?干杯
-
等一下。在您的 Scala 代码中,
match是String。到目前为止,一切都很好。每个case需要什么处理?不能是枚举本身的方法实现吗? -
@Duc:尝试删除括号:
case Enum.FOO.getValue =>
标签: java regex scala enums pattern-matching