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修飾子というのは便利そうだよなぁ。