はじめてではないJava8

はじめに

先ほどはじめてJava8をつかいました。
JapaneseDateだけではやはり満足できないのでラムダ式をためしてみます。

ラムダ式

まずJava7までの関数型インターフェースの実装です。

@FunctionalInterface
interface HogeInterface {
    boolean isHoge(String value);
}
public class JavaApplication {
    public static void main(String[] args) {
        HogeInterface hoge = new HogeInterface(){
            @Override
            public boolean isHoge(String value) {
                return value.equals("hoge");
            }
        };
    }
}

NetBeansIDE 8.0だと上記の実装をすると「この匿名内部クラスをラムダ式に変換できます。」
といわれます。「ラムダ式を使う」をクリックすると下記のようになります。
右辺の{}とreturnは省略済みです。

public class JavaApplication {
    public static void main(String[] args) {
        HogeInterface hoge = (String value) -> value.equals("hoge");
    }
}

左辺の型はインターフェースで宣言されているので自明で省略できます。

public class JavaApplication {
    public static void main(String[] args) {
        HogeInterface hoge = (value) -> value.equals("hoge");
    }
}

引数が1つなら左辺のカッコも省略できます。

public class JavaApplication {
    public static void main(String[] args) {
        HogeInterface hoge = value -> value.equals("hoge");
    }
}

まとめ

ラムダ式は「関数型インターフェース」の記述が簡単にするものみたいです。