В Java все может быть объявлено final
- в этом случае декларация сродни объявлению параметра метода final
.
Эффект этого является то, что вы не сможете переназначить значение
catch(final InputOutputException ex) {
ex = new InputOutputException();
//^compile time error.
}
На практике я только действительно когда-либо видел это используется, если Exception
потребности, которые будут использоваться в качестве анонимного класса, только final
локальные переменные могут ссылаться следующим образом:
} catch (final Exception e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
myLabel.setText(e.getMessage());
}
});
}
Роберт Симмонс младший в своей книге Hardcore Java рекомендует сделать всёfinal
. Обоснованием для этого является то, что он превращает ошибки опечатка и кода в ошибки времени компиляции.
Вам не нужно делать что-либо окончательное как таковое, но final - это проверка времени компиляции, чтобы вы не переназначали переменную в этом блоке. Некоторым/многим людям нравится объявлять все, что не следует переназначать как окончательное. – Matthias