为什么可以';Scala是否将此匹配优化为交换机?

为什么可以';Scala是否将此匹配优化为交换机?,scala,optimization,pattern-matching,switch-statement,constants,Scala,Optimization,Pattern Matching,Switch Statement,Constants,我有一个只在字节值上匹配的开关,但当我添加@开关时,它会显示: 无法将开关发送到@switch注释匹配 我错过了什么 仅供参考,我已经尝试过但没有成功: 将此常量移动到Java接口并使用公共静态最终字节字段(我还尝试将它们设置为int而不是字节) 在Scala消息伴生对象中将字段标记为final val 在伴生对象上将字段标记为@inline 我在这里肯定迷路了。论坛上提供的答案是将VAL作为最终版本,并删除字节注释: object Message { final val Authent

我有一个只在字节值上匹配的开关,但当我添加
@开关时,它会显示:

无法将开关发送到@switch注释匹配

我错过了什么

仅供参考,我已经尝试过但没有成功:

  • 将此常量移动到Java接口并使用
    公共静态最终字节
    字段(我还尝试将它们设置为
    int
    而不是
    字节
  • 在Scala
    消息
    伴生对象中将字段标记为
    final val
  • 在伴生对象上将字段标记为
    @inline

我在这里肯定迷路了。

论坛上提供的答案是将VAL作为最终版本,并删除
字节
注释:

object Message {
  final val Authentication = 'R'
  final val BackendKeyData = 'K'
  final val Bind = 'B'
  final val BindComplete = '2'
}

现在,
@开关
正确地生成了一个
查找开关
(它没有生成一个
表开关
,但它已经足够好了)。

它是:
非文字可能会阻止开关的生成:这不会编译
。这篇文章包含一个死链接,使得问题不完整,如果原始海报仍然存在,你能修好吗?现在它包括了正确的链接。