final引数

finalな引数というのを使ってみたが。

public class Test {

  public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add(0, "HOGE");
    Value value = new Value();
    value.foo = "foo";

    System.out.println("----befor");
    System.out.println(list.get(0));
    value.print();
    
    FinalTest.test(1, list, value);

    System.out.println("----after");
    System.out.println(list.get(0));
    value.print();
  }
}
public class FinalTest {

  static void test(final int i, final List<String> list, final Value value){
    //i = 7;                  //これはコンパイルエラー
    //list = new ArrayList(); //これもコンパイルエラー
    //value = new Value();    //これもコンパイルエラー
    
    list.add(0, "UPDATE");    //OK
    value.foo = "bar";        //OK
  }
}


実行結果。

----befor
HOGE
foo
----after
UPDATE
bar


うーーーーん、微妙だ。
確かにC++にあるconst修飾子というのは便利そうだよなぁ。