2015-04-03 44 views
1

我試圖創建流內的對象,但我不想定義另一個構造函數對象;我想用setters來把值放在需要的地方。這可能嗎?流中創建新對象,並使用setter方法

pe.setExts(pDTO.getExts().stream().map(s->new P(arg1, arg2, ..., arg12)))...; 

正如你所看到的,我有很多參數,其中一些需要一些處理。我希望避免直到必要時才進行這種處理。

我所尋找的可能是這樣的(我不知道怎麼寫的功能,我想了一個匿名函數將是巨大這裏):

pe.setExts(pDTO.getExts().stream().map(s->{ 
    P p = new P(); 
    s->setExt1(p.getExt1()); 
    ... 
    List<V> l = p.getExt12(); 
    List<X> finalL = null; 
    [processing list l, populating finalL] 
    s->setExt12(finalL); 
})); 

回答

3

不能使用構造函數那不在那裏。

我建議編寫將採取s變量並返回P一個方法。喜歡的東西:

public static P generatePfromS(S s) { 
    //convert S to P 
} 

,然後你可以這樣做:

pe.setExts(pDTO.getExts().stream().map(YourClass::generatePFromS).collect(toList())); 
+0

我想我的類不需要了解對方。一個是「P」,另一個是數據傳輸對象「PDTO」。按照你的方式,它意味着創建一個包含該轉換方法的第三個類。這裏的另一件事是我試圖在'PPDTOAdapter'中使用這個流。或者我應該在適配器內創建該方法並從那裏調用它? – tzortzik 2015-04-03 08:33:42

+0

根據您的解決方案,我已經在我之前的評論中給出了自己的答案。謝謝! – tzortzik 2015-04-03 08:34:23

相關問題