在这种情况下使用方法引用有什么好处?

use*_*485 5 java java-8 method-reference

我有两个变量如下:

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

我写了下面的代码在新增项目之间的关系bigBasketbasket:

for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
    for (Fruit fruit : basket.getFruitInBasket()) {
        specialFruit.addRelationship(fruit);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这一切都很好,但是IntelliJ检查了代码并提供了使用方法引用来改进它,所以我得到了以下内容:

for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
   basket.getFruitInBasket().forEach(specialFruit::addRelationship);
}
Run Code Online (Sandbox Code Playgroud)

所以上面的线路较少,但它的实际优势是什么?我并不完全了解Java 8功能的好处,这可能就是为什么我真的不明白发生了什么.

在我看来,假设您对Java 8功能没有太多了解,那么"改进"版本的代码在立即理解正在发生的事情与循环标准的意义上并不是非常易读.

有人可以解释"改进"代码与循环标准的好处吗?

编辑:删除了对lambdas的错误引用.代码只是使用方法引用 - 只是我的一个语言错误!

Era*_*ran 6

在性能方面,我认为"改进"代码没有任何优势.两个片段都会遍历整个basket.getFruitInBasket()Collection,并为每个元素执行完全相同的操作.

偏向于另一种方式仅仅是品味问题.在我看来,Java 8版本表达了这样一个事实,即您可以更清楚地对集合的所有元素执行单个操作(假设您习惯于方法引用).

顺便说一句,你的代码中没有lambda表达式,只是一个方法引用.