2016-04-26 110 views
3

是否可以將參數化構造函數作爲方法參考傳遞給map通過參數化構造函數作爲方法參考

我有我的代碼中的設施看起來像這樣

items.stream() 
     .map(it -> new LightItem(item.getId(), item.getName()) 
     .collect(Collectors.toList()); 

items列表constains幾個Item對象

Item 
    id, name, reference, key... 

LightItem只有兩個領域

LightItem 
    id, name 

如果它是寶,它會很好ssible做這樣的事情

items.stream().map(LightItem::new).collect(Collectors.toList()) 

回答

5

這裏只有一個在這裏使用的構造方式,你有一個新的構造添加到LightItem類:

public LightItem(Item item) { 
    this.id = item.getId(); 
    this.name = item.getName(); 
} 

這將允許你使用你寫的代碼:

items.stream().map(LightItem::new).collect(Collectors.toList()) 

如果你真的不想要一個新的構造添加到LightItem,有辦法解決:

class MyClass { 

    public List<LightItem> someMethod() { 
     return items.stream() 
      .map(MyClass::buildLightItem) 
      .collect(Collectors.toList()); 
    } 

    private static LightItem buildLightItem(Item item) { 
     return new LightItem(item.getId(), item.getName()); 
    } 

} 
+1

@JoachimSauer沒錯,修正了這個問題。謝謝 :) –

相關問題