在流中创建新对象并使用setter

时间:2015-04-03 08:23:53

标签: java java-8 java-stream

我正在尝试在流中创建一个对象,但我不想为该对象定义另一个构造函数;我想使用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);
}));

1 个答案:

答案 0 :(得分:3)

您不能使用不存在的构造函数。

我建议编写一个方法来获取s变量并返回P个变量。类似的东西:

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

然后你可以这样做:

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