Рубрики
Без рубрики

Преобразование пустой строки в пустой необязательный

Преобразование строки в факультативное просто в Java 8. Переход от пустой строки к пустому Факультативному так же просто?

Автор оригинала: Krzysztof Woyke.

1. Введение

В этом быстром учебнике мы представят различные способы трансформировать нулевой или пустые Струнные в пустой Необязательный .

Получение пустой Необязательный из нулевой это просто – мы просто используем Факультативно.ofNullable() . Но, что, если мы хотим пустые Струнные s работать таким образом, как хорошо?

Итак, давайте рассмотрим несколько различных вариантов для преобразования пустой Струнные в пустой необязательный.

2. Использование Java 8

В Java 8 мы можем использовать тот факт, что если Дополнительная система Предикат не выполнен, то он возвращает пустую Необязательный :

@Test
public void givenEmptyString_whenFilteringOnOptional_thenEmptyOptionalIsReturned() {
    String str = "";
    Optional opt = 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 = "";
    Optional opt = Optional.ofNullable(str).filter(Predicate.not(String::isEmpty));
    Assert.assertFalse(opt.isPresent());
}

4. Использование Гуавы

Мы также можем использовать Гуаву для удовлетворения наших потребностей. Однако в этом случае мы будем использовать несколько иной подход.

Вместо того, чтобы называть фильтр метод по результату Необязательный , мы сначала преобразуем пустую Струнные нулевой с помощью Струнный пустойToNull и только после этого передать его Необязательный :

@Test
public void givenEmptyString_whenPassingResultOfEmptyToNullToOfNullable_thenEmptyOptionalIsReturned() {
    String str = "";
    Optional opt = Optional.ofNullable(Strings.emptyToNull(str));
    Assert.assertFalse(opt.isPresent());
}

5. Заключение

В этой короткой статье мы изучили различные способы преобразования пустого Струнные на пустое необязательный.

Как обычно, примеры, используемые в этой статье, можно найти в нашем Проект GitHub .