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.
5T получить ()Если значение присутствует в этом Необязательном, возвращает значение, в противном случае генерируется исключение NoSuchElementException.
6int hashCode ()Возвращает значение хэш-кода текущего значения, если оно есть, или 0 (ноль), если значение не присутствует.
7void ifPresent (Потребитель <? super T> потребитель)Если значение присутствует, оно вызывает указанного потребителя со значением, в противном случае ничего не делает.
8логическое isPresent ()Возвращает true, если присутствует значение, иначе false.
9<U> Необязательная <U> карта (функция <? Super T, extends U> mapper)Если значение присутствует, применяет к нему предоставленную функцию отображения и, если результат не равен нулю, возвращает необязательный параметр, описывающий результат.
10статическое <T> необязательное <T> of (значение T)Возвращает Optional с указанным текущим ненулевым значением.
11static <T> Необязательный <T> ofNullable (значение T)Возвращает Optional, описывающий указанное значение, если оно не равно NULL, в противном случае возвращает пустой Optional.
12T orElse (T другое)Возвращает значение, если присутствует, в противном случае возвращает другое.
13T 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


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

Поділитись