Не получается добавить параметр в объекты внутри стрима аргументов
Есть stream аргументов-объектов для передачи их в метод с помощью @MethodSource:
var streamData = Stream.of(
Arguments.of(Optional.of(MyObject.builder()
.PARAMETER_1("value1")
.PARAMETER_2("value2")
.PARAMETER_3("value3")
.build())),
Arguments.of(Optional.of(MyObject.builder()
.PARAMETER_1("value1")
.PARAMETER_2("value2")
.PARAMETER_3("value3")
.build())));
Подскажите пожалуйста, как правильно создать новый аналогичный стрим на основе вышеуказанного, где у объектов MyObject добавлен параметр: PARAMETER_4 = "value4" ?
Пробовал, но ругается на попытке приведения типов.
var newStreamData = streamData.map(Arguments::get)
.map((Object[] t) -> Arrays.stream(Optional.of(t).get()))
.flatMap((Object[] t) -> {
MyObject o = (MyObject) t;
o.setPARAMETER_4(value4);
return Arguments.of(Optional.of(o)));
}.collect(Collectors.toList());
Ответы (1 шт):
Автор решения: Serodv
→ Ссылка
Stream<Arguments> newStreamData = streamData.map(a -> (Optional<?>) a.get()[0])
.map(t -> t.map(o -> {
var mo = (MyObject) o;
mo.setPARAMETER_4(value4);
return Arguments.of(Optional.of(mo));
}
).orElse(Arguments.of(Optional.<MyObject>empty())));