簡體   English   中英

在這種情況下使用方法引用有什么好處?

[英]What's the advantage of using method references in this case?

我有兩個變量如下:

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);
    }
}

現在這一切都很好,但是IntelliJ檢查了代碼並提供了使用方法引用來改進它,所以我得到了以下內容:

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

所以上面的線路較少,但它的實際優勢是什么? 我並不完全了解Java 8功能的好處,這可能就是為什么我真的不明白發生了什么。

在我看來,假設您對Java 8功能沒有太多了解,那么“改進”版本的代碼在立即理解正在發生的事情與循環標准的意義上並不是非常易讀。

有人可以解釋“改進”代碼與循環標准的好處嗎?

編輯:刪除了對lambdas的錯誤引用。 代碼只是使用方法引用 - 只是我的一個語言錯誤!

在性能方面,我認為“改進”代碼沒有任何優勢。 兩個片段都會迭代整個basket.getFruitInBasket() Collection,並為每個元素執行完全相同的操作。

偏向於另一種方式僅僅是品味問題。 在我看來,Java 8版本表達了這樣一個事實,即您可以更清楚地對集合的所有元素執行單個操作(假設您習慣於方法引用)。

順便說一句,你的代碼中沒有lambda表達式,只是一個方法引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM