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

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

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

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

public final class Optional<T> extends Object

Метод класса

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

static <T> Optional<T> empty()

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

2

boolean equals(Object obj)

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

3

Optional<T> filter(Predicate<? super <T> predicate)

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

4

<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

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

5

T get()

Если значение присутствует в этом Optional, возвращает значение, в противном случае выдает исключение NoSuchElementException.

6

int hashCode()

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

7

void ifPresent(Consumer<? super T> consumer)

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

8

boolean isPresent()

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

9

<U>Optional<U> map(Function<? super T,? extends U> mapper)

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

10

static <T> Optional<T> of(T value)

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

11

static <T> Optional<T> ofNullable(T value)

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

12

T orElse(T other)

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

13

T orElseGet(Supplier<? extends T> other)

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

14

<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

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

15

String toString()

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

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

  • 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