EC2 SSH Отказано в доступе (publickey, gssapi-keyex, gssapi-with-mic)

Вы не спрашиваете: «Почему они не окончательные», вы спрашиваете: «Почему они не включены». Просто конечный результат заключается в том, как вы комментируете компилятор, что вы хотите, чтобы они были встроены.

Причина, по которой они не являются автоматически встроенными, - это отдельная компиляция.

object A { final val x = 55 }
object B { def f = A.x }

Когда вы компилируете это, Bf возвращает 55, буквально:

public int f();
  0: bipush        55
  2: ireturn       

Это означает, что если вы перекомпилируете A, B не обратит внимания на изменение. Если x не отмечен окончательным в A, B.f выглядит следующим образом:

  0: getstatic     #19                 // Field A$.MODULE$:LA$;
  3: invokevirtual #22                 // Method A$.x:()I
  6: ireturn       

Кроме того, чтобы исправить один из других ответов, final не означает неизменяемость в scala.

13
задан Jakuje 30 November 2015 в 23:19
поделиться