Перейти к контенту

Optional Class в Java 8

Optional — объект-контейнер, используемый для хранения ненулевых объектов. Необязательный объект используется для представления нулевого значения с отсутствующим значением. Этот класс имеет различные служебные методы, облегчающие коду обрабатывать значения как «доступные» или «недоступные» вместо проверки нулевых значений. Он введен в Java 8 и похож на то, что Optional есть в Guava.

Объявление класса

Ниже приводится объявление для класса java.util.Optional <T> —

 

public final class Optional<T> extends Object

Методы класса

  • static <T> Optional<T> empty(). Возвращает пустой экземпляр.
  • boolean equals(Object obj). Указывает, является ли какой-либо другой объект «равным» Optional.
  • Optional<T> filter(Predicate<? super <T> predicate). Если значение присутствует и значение соответствует заданному предикату, он возвращает Optional параметр, описывающий значение, в противном случае возвращается пустой Optional.
  • <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper). Если значение присутствует, оно применяет к нему предоставленную функцию сопоставления Optional-Bear, возвращает этот результат, в противном случае возвращает пустой Optional.
  • T get(). Если значение присутствует в этом классе, возвращает значение, в противном случае генерируется исключение NoSuchElementException.
  • int hashCode(). Возвращает значение хэш-кода текущего значения, если оно есть, или 0 (ноль), если значение не присутствует.
  • void ifPresent(Consumer<? super T> consumer). Если значение присутствует, оно вызывает указанного потребителя со значением, в противном случае ничего не делает.
  • boolean isPresent(). Возвращает true, если присутствует значение, иначе false.
  • <U>Optional<U> map(Function<? super T,? extends U> mapper). Если значение присутствует, применяет к нему предоставленную функцию отображения и, если результат не равен нулю, возвращает параметр, описывающий результат.
  • static <T> Optional<T> of(T value). Возвращает Optional с указанным текущим ненулевым значением.
  • static <T> Optional<T> ofNullable(T value). Возвращает Optional, описывающий указанное значение, если оно не равно NULL, в противном случае возвращает пустой Optional.
  • T orElse(T other). Возвращает значение, если присутствует, в противном случае возвращает другое.
  • T orElseGet(Supplier<? extends T> other). Возвращает значение, если оно присутствует, в противном случае вызывает other и возвращает результат этого вызова.
  • <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier). Возвращает содержащееся значение, если оно присутствует, в противном случае генерируется исключение, которое будет создано предоставленным поставщиком.
  • String toString(). Возвращает непустое строковое представление этого Optional, подходящего для отладки.

Этот класс наследует методы из следующего класса — java.lang.Object

Пример

Создайте следующую Java-программу, используя любой редактор по вашему выбору, например, в C: \> JAVA.

Java8Tester.java

import java.util.Optional;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);
		
      //Optional.ofNullable - allows passed parameter to be null.
      Optional<Integer> a = Optional.ofNullable(value1);
		
      //Optional.of - throws NullPointerException if passed parameter is null
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }
	
   public Integer sum(Optional<Integer> a, Optional<Integer> b) {
      //Optional.isPresent - checks the value is present or not
		
      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());
		
      //Optional.orElse - returns the value if present otherwise returns
      //the default value passed.
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - gets the value, value should be present
      Integer value2 = b.get();
      return value1 + value2;
   }
}

Результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\JAVA>javac Java8Tester.java

Теперь запустите Java8Tester следующим образом —

C:\JAVA>java Java8Tester

Он должен произвести следующий вывод —

First parameter is present: false
Second parameter is present: true
10

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)