6.関数参照(Function Reference) 新しい記述が導入されるみたい。 クラス/インスタンスメンバへの参照は、"."演算子だが、 関数参照として新しく"#"演算子(みたいの)が導入されている。 このときは引数は型のみ記述している。メソッドを呼び出すというより、 クロージャとして取得したいメソッドのシグネチャを指定している感じ。 .netのデリゲート生成と似ている気がする。 例) 関数参照のコード String str = "Hello World !!"; {int,int=>String} subString = str#substring(int,int); // 引数も"型"を指定する --> ~~~~~~ System.out.println("subString=" + subString.invoke(0, 5)); // 出力:subString=Hello 逆コンパイルしたコード finalも@Sharedも無しでコンパイルできたのは自動でfinal代入コードが 挿入されるためと判明。 String s = "Hello World !!"; final String binding = s; // このコードが自動挿入され変数がクロージャに渡される OII oii = new OII() { public final String _2B_invoke(int i, int j) { return binding.substring(i, j); } public final String invoke(int i, int j) { return _2B_invoke(i, j); } public volatile Object invoke(int i, int j) throws Throwable { return invoke(i, j); } final String val$binding; {...