5

次のように2つの変数があります。

List<Basket> bigBasket = new ArrayList<>(); Basket basket = new Basket();

bigBasketと のアイテム間の関係を追加するために、次のコードを書きましたbasket

for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
    for (Fruit fruit : basket.getFruitInBasket()) {
        specialFruit.addRelationship(fruit);
    }
}

これで問題ありませんが、IntelliJはコードを検査し、メソッド参照を使用してコードを改善することを提案したので、次のようになりました:

for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
   basket.getFruitInBasket().forEach(specialFruit::addRelationship);
}

上記は行数が少ないですが、実際の利点は何ですか? 私は Java 8 の機能の利点を完全に把握しているわけではないので、何が起こっているのか本当に理解していないのはおそらくそのためです。

私の意見では、「改善された」バージョンのコードは、Java 8 の機能についてあまり知識がないと仮定すると、標準の for ループに対して何が起こっているのかをすぐに理解できるという意味で、あまり読みやすくありません。

誰かが「改善された」コードと標準の for ループの利点を説明できますか?

編集: ラムダへの誤った参照を削除しました。コードはメソッド参照を使用しているだけです - 私の側の専門用語の間違いです!

4

1 に答える 1