トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Javaの関数型とラムダ式

ラムダ式

 書き方

1
 Function<String,String> func = s -> "[" + s + "] " + this.getClass();

のようにかける。

1
2
3
4
5
6
    Function<String,String> func = new Function<String,String>(){
      @Override
      public String apply(String s){
        return "[" + s + "] " + this.getClass();
      }
    };

に近いイメージだが、ラムダ式の場合は this はラムダ式を実行したオブジェクトになる。

 内部的なこと

ラムダ式を

javap -c -p 

で見てみると

private java.lang.String lambda$0(java.lang.String);

が定義されており、

invokedynamic

で実行されている。ラムダ式内のthisが実行したオブジェクトになるのは、この辺が理由だと思うが、詳しくは知らない。機会があれば調べる。



[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2013年12月12日 23時09分42秒