что означает final в Groovy

Если вы запустите следующий код в консоли Groovy, он напечатает «8»

class F {

  private final Integer val = 2

  def set(v) {val = v}

  def print() {println val}
}

def f = new F()
f.set(8)
f.print()

В Java этот код не скомпилируется, потому что вы не можете назначить ссылку final после запуска конструктора. Я знаю, что для свойств final указывает, что свойство не может быть изменено вне класса, но что значит пометить закрытое поле final?

Спасибо, Дон


person Dónal    schedule 30.10.2009    source источник


Ответы (1)


Похоже, это может быть ошибка Groovy:

Я бы не подумал, что val можно назначать после инициализации.

person Rob Hruska    schedule 30.10.2009