Автор оригинала: Pankaj Kumar.
Опубликуйте Краткое содержание:
- Вступление
- Java SE 8: Основы необязательного класса
- Java SE 8: Необязательный Базовый Пример
- Java SE 9: Дополнительные Улучшения Класса
- Java SE 9: Необязательный метод stream()
- Стиль Java SE 8: Дополнительные методы
- Java SE 9: Необязательно, если присутствует, Или Метод Else()
- Java SE 9: Необязательный метод или()
Вступление
В этом посте мы обсудим “Как дополнительный класс Java SE 8 решает проблему проверки на нуль?”, а также “Дополнительные улучшения класса Java SE 9”.
Как разработчик Java, мы знаем, сколько работы мы выполняли для проверки на нуль для каждого объекта, чтобы избежать ошибок NullPointerException.
Java SE 8: Основы необязательного класса
Корпорация Oracle представила дополнительный класс как часть пакета “java.util”. Это объект-контейнер, который может содержать или не содержать ненулевое значение.
Он в основном используется для того, чтобы избежать множества проверок на нуль и проблем с исключениями NullPointerException. Несмотря на то, что является частью пакета java.util, но он НЕ реализует никаких интерфейсов API коллекции. Он расширяет класс объектов, как показано ниже.
public final class Optionalextends Object
Это последний класс, и мы не можем его переопределить. Если необязательный объект НЕ пуст, это означает, что в нем присутствует значение. Если он пуст, то значение отсутствует, как показано ниже.
Java SE 8: Необязательный Базовый Пример
В этом разделе мы рассмотрим, как использовать необязательный объект Java SE 8, чтобы избежать проверок на нуль и исключений NullPointerExceptions.
Пример:- Это простой и базовый пример для необязательного класса. В нем показано, как создать пустой необязательный объект с помощью Optional.empty() и как создать непустой необязательный объект.
import java.util.Optional; public class JavaSE8OptionalDemo { public static void main(String[] args) { System.out.println(division(4,2)); System.out.println(division(4,0)); } public static Optionaldivision(Integer i1,Integer i2) { if(i2 == 0) return Optional.empty(); else { Integer i3 = i1/i2; return Optional.of(i3); } } }
Выход:-
Optional[2] Optional.empty
Java SE 9: Дополнительные Улучшения Класса
В Java SE 9 корпорация Oracle представила следующие три метода для улучшения дополнительных функций.
- поток()
- ifPresentOrElse()
- или()
Мы рассмотрим эти методы один за другим и подробно обсудим их с некоторыми подходящими примерами в следующих разделах.
Java SE 9: Необязательный метод stream()
Если значение присутствует в данном необязательном объекте, этот метод stream() возвращает последовательный поток с этим значением. В противном случае он возвращает пустой поток.
Они добавили метод “stream()” для ленивой работы с необязательными объектами, как показано ниже:
Streamemp = getEmployee(id) Stream empStream = emp.flatMap(Optional::stream)
Здесь используется метод Optional.stream (), преобразующий поток необязательного объекта Сотрудника в поток сотрудника, чтобы мы могли лениво работать над этим результатом в коде результата.
Стиль Java SE 8: Дополнительные методы
В Java SE 8 мы должны использовать методы if Present (), is Present (), or Else() и т.д. Для проверки необязательного объекта и выполнения некоторых функций на нем. Это немного утомительный процесс для выполнения этого. Однако Java SE 9 представила новый метод для решения этой проблемы.
Давайте рассмотрим стиль Java SE 8 в этом разделе. Мы рассмотрим этот новый метод в следующем разделе.
Здесь мы рассмотрим следующие три дополнительных метода класса:
- Если присутствует()
- Присутствует()
- Орельсе()
Если значение присутствует, выполняет данное действие со значением, в противном случае ничего не делает.
Если значение присутствует, возвращает true, в противном случае false.
Если значение присутствует, возвращает значение, в противном случае возвращает другое.
Пример:-
import java.util.Optional; public class JavaSE8OptionalDemo { public static void main(String[] args) { Optionalopt1 = division(4,2); opt1.ifPresent( x -> System.out.println("Option1: Result found = " + x)); Optional opt2 = division(4,0); opt2.ifPresent( x -> System.out.println("Option2: Result found: " + x)); System.out.println("Option2: Result not found, default vlaue = " + opt2.orElse(new Integer(0))); if(opt2.isPresent()) System.out.println("Option2: Result found."); else System.out.println("Option2: Result not found."); } public static Optional division(Integer i1,Integer i2) { if(i2 == 0) return Optional.empty(); else { Integer i3 = i1/i2; return Optional.of(i3); } } }
Выход:-
Option1: Result found = 2 Option2: Result not found, default vlaue = 0 Option2: Result not found.
Java SE 9: Необязательно, если присутствует, Или Метод Else()
В этом разделе мы рассмотрим некоторые сценарии, используя дополнительный метод ifPresentOrElse() Java SE 9. Он красиво сочетает в себе все эти методы, такие как if Present (), is Present() и or Else ().
Java SE 9 Необязательно, если присутствует, Или Другой() API:-
public void ifPresentOrElse(Consumerl super Tl> action, Runnable emptyAction)
Если значение присутствует, выполняет данное действие со значением, в противном случае выполняет данное действие на основе пустого значения.
Пример ifPresentOrElse():-
jshell> Optionalopt1 = Optional.of(4) opt1 ==> Optional[4] jshell> opt1.ifPresentOrElse( x -> System.out.println("Result found: " + x), () -> System.out.println("Not Found.")) Result found: 4 jshell> Optional opt2 = Optional.empty() opt2 ==> Optional.empty jshell> opt2.ifPresentOrElse( x -> System.out.println("Result found: " + x), () -> System.out.println("Not Found.")) Not Found.
Java SE 9: Необязательный метод или()
В Java SE 9 Необязательный API или() метод используется для возврата значения, если необязательный содержит значение. В противном случае возвращает значение, указанное в Поставщике. Этот метод или() принимает поставщика в качестве аргумента для указания значения по умолчанию
Java SE 9 Необязательный или() API:-
public Optionalor(Supplier extends Optional extends T>> supplier)
Давайте сначала рассмотрим пример со значением, присутствующим в необязательном.
Java SE 9 Необязательно или() Пример-1:-
jshell> OptionalopStr = Optional.of("Rams") opStr ==> Optional[Rams] jshell> import java.util.function.* jshell> Supplier > supStr = () -> Optional.of("No Name") supStr ==> $Lambda$67/222624801@23faf8f2 jshell> opStr.or(supStr) $5 ==> Optional[Rams]
Давайте рассмотрим пример со значением, отсутствующим в необязательном сейчас. Java SE 9 Необязательно или() Пример-2:-
jshell> OptionalopStr = Optional.empty() opStr ==> Optional.empty jshell> Supplier > supStr = () -> Optional.of("No Name") supStr ==> $Lambda$67/222624801@23faf8f2 jshell> opStr.or(supStr) $7 ==> Optional[No Name]
Вот и все о новой функции “Java SE 9: Дополнительные улучшения класса”. Мы обсудим еще несколько новых функций Java SE 9 в моих следующих постах.
Пожалуйста, напишите мне комментарий, если вам нравится мой пост или у вас есть какие-либо вопросы/предложения/ошибки типа.
Спасибо, что прочитали мои учебные пособия.
Счастливого Обучения Java SE 9!