У меня есть следующая проблема. Скажем, у вас есть 2 Optional
variables
Optional<Contact> c1 = ...
Optional<Contact> c2 = ...
и метод, который требует 2 переменных типа Contact
void match(Contact c1, Contact c2) {...}
и вам нужно развернуть оба c1 и c2 Optional
vars и передать их в метод match()
.
Мой вопрос "Какой самый элегантный способ сделать это в Java 8?"
До сих пор я нашел 2 способа:
-
используя isPresent
if (c1.isPresent() && c2.isPresent()) { match(c1.get(), c2.get()); }
-
используя вложенный ifPresent
c1.ifPresent((Contact _c1) -> { c2.ifPresent((Contact _c2) -> { match(_c1, _c2); }); });
Оба способа ужасны, на мой взгляд. В Scala я могу сделать это:
for {
contact1 <- c1
contact2 <- c2
} yield {
match(contact1, contact2);
}
Есть ли способ в Java 8 сделать это более аккуратным, чем указано выше?