Аргументы final
Java позволяет Вам так же создавать и аргументы final определением их таким образом прямо в списке аргументов. Это означает, что внутри метода Вы не сможете изменить этот аргумент или его ссылку:
//: c06:FinalArguments.java
// Использование "final" с аргументами методов.
class Gizmo { public void spin() {} }
public class FinalArguments { void with(final Gizmo g) { //! g = new Gizmo(); // Неверно -- g - final
} void without(Gizmo g) { g = new Gizmo(); // OK -- g не final
g.spin(); } // void f(final int i) { i++; } // Не может измениться
// Вы можете только читать примитив:
int g(final int i) { return i + 1; } public static void main(String[] args) { FinalArguments bf = new FinalArguments(); bf.without(null); bf.with(null); } } ///:~
Заметьте, что Вы все еще можете соединить null ссылку с final аргументом, без реакции со стороны компилера, таким же образом, как и с не final аргументами.
Методы f( ) и g( ) показывают, что случается, когда примитивный аргумент - final: Вы можете прочитать его, но не можете изменить его.