Автор оригинала: Pankaj Kumar.
В этой статье мы рассмотрим необязательный класс Java, который был представлен в Java 8.
Java Необязательно
- Одним из наиболее частых исключений в программировании на Java является Исключение NullPointerException . Значение Null часто представляет собой отсутствие значения, которое необходимо обработать, прежде чем переходить к обычной бизнес-логике, что приводит к ненужным проверкам на нуль.
- Чтобы обработать такой код котельной плиты для ситуаций проверки на нуль, Java 8 ввела
Необязательный
класс. В этой статье мы подробно рассмотрим, как API необязательного класса Java 8 помогает нам работать со значениями null. - Java 8 stream API и методы сбора могут возвращать
Необязательные
объекты. Он может содержать или не содержать ненулевое значение. В API доступны различные методы для обработки необязательного значения удобным и надежным способом. - Java Необязательно является последним классом.
Необязательный пример Java 8
Давайте рассмотрим пример, чтобы получить четкое представление о том, когда было бы полезно использовать объекты Необязательного
класса.
ListlistOfStrings = Arrays.asList("Mark", "Howard", "Anthony D'Cornian"); Optional largeString = listOfStrings.stream().filter(str -> str.length() > 10).findAny(); largeString.ifPresent(System.out::println); Optional veryLargeString = listOfStrings.stream().filter(str -> str.length() > 20).findAny(); veryLargeString.ifPresent(System.out::println);
Выход:
Anthony D'Cornian
Как мы видим, мы хотим отфильтровать список строк и получить значение, длина которого превышает пороговое значение.
Такие значения могут существовать или не существовать в списке. Необязательно
API был бы идеальным выбором для использования в таких ситуациях. Как вы можете видеть, у него есть метод ifPresent
, который позволяет нам определить, что делать со значением, если мы его получим.
В нашем случае очень большая строка
не будет содержать никакого значения, поэтому ничего не будет напечатано.
Дополнительный API Java 8 предоставляет несколько таких методов. В следующих разделах мы рассмотрим их подробно.
Дополнительные методы Java
статический необязательный пустой()
: Он создает и возвращает пустойНеобязательный
экземпляр.логическое значение isPresent()
: Оно возвращает значение true, если присутствует значение, в противном случае значение false.void ifPresent(потребительский потребитель)
: Если значение присутствует, этот метод вызывает указанного потребителя со значением, в противном случае ничего не делает. Как мы видим, в нашем первом примере:дал выход:
T get()
: Если значение присутствует в необязательном, этот метод возвращает значение, в противном случае вызывает исключение NoSuchElementException. Как вы, возможно, уже догадалисьтакже будет напечатана
T OrElse(T Другое значение)
: Этот метод возвращает значение, если оно присутствует, в противном случае возвращает другое значение, указанное в аргументе. Когда мы не уверены, будет лиНеобязательно
содержать значение, всегда полезно использовать этот метод, а не простойget()
.напечатает:
Также доступен метод
orElseGet(Поставщик другой)
, который вызывает функцию поставщика или выполняет лямбда-код для получения значения вместо возврата жестко закодированного значения.также будет выведено то же значение.
статический необязательный (значение T)
: Возвращает необязательный параметр с указанным текущим ненулевым значением.Необязательный фильтр(Предикат предиката)
: Он принимает предикат в качестве аргумента и возвращает необязательный объект. Если условие предиката выполнено, то Необязательный параметр возвращается как есть, в противном случае он вернет пустойНеобязательный
.Выход:
Существуют также методы equals()
, hashcode()
и toString ()
, доступные в дополнительном API.
Дополнительные улучшения класса Java 9
Java 9 представила несколько дополнительных методов в необязательном классе:
публичная недействительность, если представитель(Потребитель супер T> действие, выполняемое пустое действие)
: Если значение присутствует, выполняет данное действие со значением, в противном случае выполняет данное действие на основе пустого. супер T> действие, выполняемое пустое действие): Если значение присутствует, выполняет данное действие со значением, в противном случае выполняет данное действие на основе пустого.
общедоступный Необязательный или(Поставщик расширяет Необязательный расширяет T>> поставщик): Если значение присутствует, возвращает необязательное значение, описывающее значение, в противном случае возвращает необязательное значение, созданное функцией поставки. расширяет Необязательный расширяет T>> поставщик): Если значение присутствует, возвращает необязательное значение, описывающее значение, в противном случае возвращает необязательное значение, созданное функцией поставки. расширяет T>> поставщик): Если значение присутствует, возвращает необязательное значение, описывающее значение, в противном случае возвращает необязательное значение, созданное функцией поставки.
общедоступный поток stream()
Это все для необязательного класса Java. Вам также следует ознакомиться с функциями java 8 .
Ссылка: API Doc