val
s not (?) 在单例对象中自动成为 final的原因是什么?例如
object NonFinal {
val a = 0
val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => false
}
}
结果是:
<console>:12: error: could not emit switch for @switch annotated match
def test(i: Int) = (i: @annotation.switch) match {
^
然而
object Final {
final val a = 0
final val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => false
}
}
编译时没有警告,因此可能会生成更快的模式匹配表。
不得不添加final
对我来说似乎纯粹是烦人的噪音。不是object
决赛本身,因此也是它的成员?