1. ホーム

[解決済み】Javaの矢印演算子'->'は何をするのですか?

2022-04-05 07:57:43

質問

コードを調べているうちにarrow演算子に行き当たりましたが、これはいったい何をするものなのでしょうか?Javaにはarrow演算子がないと思っていました。

return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
        return Car.SEDAN == ((Car)arg0).getStyle();
});

詳細 : Java 6、Apache Commons Collection、IntelliJ 12

更新/回答 IntelliJ 12はJava 8をサポートしており、ラムダをサポートしているため、Predicatesを"folding"してラムダとして表示していることがわかりました。以下は、折りたたまれていないコードです。

return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
    public boolean evaluate(Object arg0) {
        return Car.SEDAN == ((Car)arg0).getStyle();
    }
});

解決方法は?

これは、Java 8で導入される新しいラムダ式の構文の一部です。オンラインチュートリアルがいくつかあるので、コツを掴んでください。 リンク をご覧ください。基本的には -> は、パラメータ(左側)と実装(右側)を分離します。

ラムダ式を使用するための一般的な構文は次のとおりです。

(Parameters) -> { Body } ここで -> はパラメータとラムダ式本体を分離する。

パラメータはメソッドと同じように括弧で囲み、ラムダ式本体は中括弧で囲んだコードブロックとします。