231

いくつかのコードを探しているときに、矢印演算子に出くわしました。正確には何をするのでしょうか? Javaには矢印演算子がないと思っていました。

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

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

更新/回答: IntelliJ 12 は、ラムダをサポートする Java 8 をサポートし、述語を「折りたたんで」ラムダとして表示することが判明しました。以下は「展開された」コードです。

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

5 に答える 5

178

これは、Java 8 で導入される新しいラムダ式の構文の一部です。コツをつかむためのオンライン チュートリアルがいくつかあります。その1つへのリンクを次に示します。基本的に、->はパラメーター (左側) を実装 (右側) から分離します。

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

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

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

于 2013-02-28T21:35:27.023 に答える
62

これは、機能的なインターフェースを実装したい場合にも役立ちます

Runnable r = ()-> System.out.print("Run method");

と同等です

Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.print("Run method");
        }
};
于 2017-08-30T11:59:52.537 に答える
34

この矢印が存在するのは、IDE のおかげだと思います。IntelliJ IDEA は、いくつかのコードでそのようなことを行います。これをコードの折りたたみと呼びます。矢印をクリックして展開できます。

于 2013-02-28T21:42:46.413 に答える
15

ラムダ式です。

これは、listOfCars から、arg0 がそのリストの項目の 1 つであることを意味します。その項目で彼がやろうとしていること、したがって -> 、角かっこの中にあるものは何でも。

この例では、条件に適合する車のリストを返します。

Car.SEDAN == ((Car)arg0).getStyle();
于 2013-02-28T21:37:13.203 に答える