#java #java-8
#java #java-8
Вопрос:
Как я могу написать это, если более компактно использовать Java 8?
Optional.ofNullable(city).ifPresent(c -> {
if (!city.equalsIgnoreCase(district)) {
address.setCity(district ", " c);
}
});
Комментарии:
1. Я бы заменил
Optional.ofNullable(city).ifPresent(c -> {
наif (city != null) {
.2. и тогда оно просто становится
if (city != null amp;amp; !city.equalsIgnoreCase(district)) { ... }
, не становится более кратким, чем это.3. Да, спасибо за ваши комментарии. Я хотел это сделать, но мои колледжи используют много необязательных, и я совсем новичок в лямбда-выражении. Я просто блуждал, могу ли я написать это, если более элегантно. Я буду использовать простое if than .
4.
Optional
может использоваться, чтобы сделать проверку null более элегантной , но для этого требуется ваш дизайн. Вы не можете заставить его и надеяться, что оно выглядит хорошо, потому что, вероятно, этого не произойдет. Вам понадобится оператор elvis (см. Ссылку), а в Java его нет. Возможно, ваши коллеги злоупотребляютOptional
, если они используют его много. Спросите их, могут ли они объяснить дизайн, лежащий в основе их выбора. Если они не могут, они могут стать жертвой программирования Cargo cult .
Ответ №1:
Как прокомментировал Эран, вы можете избежать ложного обхода Optional
, просто напрямую проверив null
:
if (city != null amp;amp; !district.equalsIgnoreCase(city)) {
address.setCity(district ", " city);
}