Учебники

Java 8 — необязательный класс

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

Декларация класса

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

public final class Optional<T> extends Object

Метод класса

Sr.No. Метод и описание
1

статический <T> Необязательный <T> empty ()

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

2

логическое равенство (Object obj)

Указывает, является ли какой-либо другой объект «равным» этому Необязательному.

3

Необязательный фильтр <T> (предикат <? Super <T> предикат)

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

4

<U> Необязательный <U> flatMap (Функция <? Super T, Необязательный <U >> маппер)

Если значение присутствует, оно применяет к нему предоставленную функцию сопоставления Optional-Bear, возвращает этот результат, в противном случае возвращает пустой Optional.

5

T получить ()

Если значение присутствует в этом Необязательном, возвращает значение, в противном случае генерируется исключение NoSuchElementException.

6

int hashCode ()

Возвращает значение хэш-кода текущего значения, если оно есть, или 0 (ноль), если значение не присутствует.

7

void ifPresent (Потребитель <? super T> потребитель)

Если значение присутствует, оно вызывает указанного потребителя со значением, в противном случае ничего не делает.

8

логическое isPresent ()

Возвращает true, если присутствует значение, иначе false.

9

<U> Необязательная <U> карта (функция <? Super T, extends U> mapper)

Если значение присутствует, применяет к нему предоставленную функцию отображения и, если результат не равен нулю, возвращает необязательный параметр, описывающий результат.

10

статическое <T> необязательное <T> of (значение T)

Возвращает Optional с указанным текущим ненулевым значением.

11

static <T> Необязательный <T> ofNullable (значение T)

Возвращает Optional, описывающий указанное значение, если оно не равно NULL, в противном случае возвращает пустой Optional.

12

T orElse (T другое)

Возвращает значение, если присутствует, в противном случае возвращает другое.

13

T orElseGet (Поставщик <? Расширяет T> другое)

Возвращает значение, если оно присутствует, в противном случае вызывает other и возвращает результат этого вызова.

14

<X extends Throwable> T orElseThrow (Поставщик <? Extends X> exceptionSupplier)

Возвращает содержащееся значение, если оно присутствует, в противном случае генерируется исключение, которое будет создано предоставленным поставщиком.

15

Строка toString ()

Возвращает непустое строковое представление этого Optional, подходящего для отладки.

статический <T> Необязательный <T> empty ()

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

логическое равенство (Object obj)

Указывает, является ли какой-либо другой объект «равным» этому Необязательному.

Необязательный фильтр <T> (предикат <? Super <T> предикат)

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

<U> Необязательный <U> flatMap (Функция <? Super T, Необязательный <U >> маппер)

Если значение присутствует, оно применяет к нему предоставленную функцию сопоставления Optional-Bear, возвращает этот результат, в противном случае возвращает пустой Optional.

T получить ()

Если значение присутствует в этом Необязательном, возвращает значение, в противном случае генерируется исключение NoSuchElementException.

int hashCode ()

Возвращает значение хэш-кода текущего значения, если оно есть, или 0 (ноль), если значение не присутствует.

void ifPresent (Потребитель <? super T> потребитель)

Если значение присутствует, оно вызывает указанного потребителя со значением, в противном случае ничего не делает.

логическое isPresent ()

Возвращает true, если присутствует значение, иначе false.

<U> Необязательная <U> карта (функция <? Super T, extends U> mapper)

Если значение присутствует, применяет к нему предоставленную функцию отображения и, если результат не равен нулю, возвращает необязательный параметр, описывающий результат.

статическое <T> необязательное <T> of (значение T)

Возвращает Optional с указанным текущим ненулевым значением.

static <T> Необязательный <T> ofNullable (значение T)

Возвращает Optional, описывающий указанное значение, если оно не равно NULL, в противном случае возвращает пустой Optional.

T orElse (T другое)

Возвращает значение, если присутствует, в противном случае возвращает другое.

T orElseGet (Поставщик <? Расширяет T> другое)

Возвращает значение, если оно присутствует, в противном случае вызывает other и возвращает результат этого вызова.

<X extends Throwable> T orElseThrow (Поставщик <? Extends X> exceptionSupplier)

Возвращает содержащееся значение, если оно присутствует, в противном случае генерируется исключение, которое будет создано предоставленным поставщиком.

Строка toString ()

Возвращает непустое строковое представление этого Optional, подходящего для отладки.

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

  • java.lang.Object

Необязательный пример

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

Java8Tester.java

Live Demo

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

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