Почему `val` внутри` object` не является финальным автоматически?

В чем причинаvalне является (?) автоматически финальным в одноэлементных объектах? Например.

object NonFinal {
   val a = 0
   val b = 1

   def test(i: Int) = (i: @annotation.switch) match {
      case `a` => true
      case `b` => false
   }
}

результаты в:

: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 мне кажется чистый раздражающий шум Isn»тobject Само по себе окончательное, а значит и его участники?

Ответы на вопрос(3)

Ваш ответ на вопрос