2015-04-03 48 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

相关问题