Как я могу написать это выражение более компактно в Java 8?

#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);
}