Создание нового объекта внутри потока и использование сеттеров

Я пытаюсь создать объект внутри потока, но я не хочу определять другой конструктор для объекта; Я хотел бы использовать установщики, чтобы поместить значения, где это необходимо. Это возможно?

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 ответ

Решение

Вы не можете использовать конструктор, которого там нет.

Я бы предложил написать метод, который бы s переменная и возвращает P один. Что-то вроде:

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

и тогда вы можете просто сделать:

pe.setExts(pDTO.getExts().stream().map(YourClass::generatePFromS).collect(toList()));
Другие вопросы по тегам