Hej, mam pytanie jak ugryźć taki kawałek kodu:
@Getter
@RequiredArgsConstructor
public class Order {
private final Long id;
private final List<Product> products;
}
@Getter
@RequiredArgsConstructor
public class Product {
private final String productName;
private final int amount;
private final BigDecimal unitPrice;
}
...
boolean processOrder(Order order) {
return Option.of(order)
.toStream() // ???
.flatMap(Order::getProducts)
.exists(x -> x.getAmount() > 10);
}
Logika jest mniej więcej taka że z obiektu Order wyciągam List<Product>. Przechodząc po Product staram się znaleźć czy jakikolwiek z nich spełni daną logikę. Wtedy zwracam dajmy na to true.
- Czy takie założenie może mieć sens? Czy nie jest to przekombinowane?
Order -> Option<Order> -> lista Product -> boolean - Czy można to jakoś zrobić bez .toStream() ?
- Jak się zabezpieczyć w takim wypadku na Null Safety? Np gdy new Order(1L, null). Czyli List<Product> jest null.
- Czym się różni .flatMap() na streamie a czym na Option ?