Автор оригинала: Krzysztof Woyke.
1. Введение
В этом быстром учебнике мы представят различные способы трансформировать нулевой или пустые Струнные в пустой Необязательный .
Получение пустой Необязательный из нулевой это просто – мы просто используем Факультативно.ofNullable() . Но, что, если мы хотим пустые Струнные s работать таким образом, как хорошо?
Итак, давайте рассмотрим несколько различных вариантов для преобразования пустой Струнные в пустой необязательный.
2. Использование Java 8
В Java 8 мы можем использовать тот факт, что если Дополнительная система Предикат не выполнен, то он возвращает пустую Необязательный :
@Test public void givenEmptyString_whenFilteringOnOptional_thenEmptyOptionalIsReturned() { String str = ""; Optionalopt = Optional.ofNullable(str).filter(s -> !s.isEmpty()); Assert.assertFalse(opt.isPresent()); }
И нам даже не нужно проверять на нулевой здесь с изнеумленных будет короткое замыкание для нас в тех случаях, когда str является нулевой.
Создание специальной lambda для предиката немного громоздким, однако. Мы можем как-нибудь от него избавиться?
3. Использование Java 11
Ответ на вышеупомянутое желание на самом деле не приходит до Java 11.
На Java 11 мы все еще будем использовать Факультатив.фильтр () , но Java 11 вводит новый Predicate.not () API, который упрощает отрицание ссылок на методы.
Итак, давайте упростим то, что мы делали раньше, теперь используя ссылку на метод вместо этого:
@Test public void givenEmptyString_whenFilteringOnOptionalInJava11_thenEmptyOptionalIsReturned() { String str = ""; Optionalopt = Optional.ofNullable(str).filter(Predicate.not(String::isEmpty)); Assert.assertFalse(opt.isPresent()); }
4. Использование Гуавы
Мы также можем использовать Гуаву для удовлетворения наших потребностей. Однако в этом случае мы будем использовать несколько иной подход.
Вместо того, чтобы называть фильтр метод по результату Необязательный , мы сначала преобразуем пустую Струнные нулевой с помощью Струнный пустойToNull и только после этого передать его Необязательный :
@Test public void givenEmptyString_whenPassingResultOfEmptyToNullToOfNullable_thenEmptyOptionalIsReturned() { String str = ""; Optionalopt = Optional.ofNullable(Strings.emptyToNull(str)); Assert.assertFalse(opt.isPresent()); }
5. Заключение
В этой короткой статье мы изучили различные способы преобразования пустого Струнные на пустое необязательный.
Как обычно, примеры, используемые в этой статье, можно найти в нашем Проект GitHub .