Необязательно — объект-контейнер, используемый для хранения ненулевых объектов. Необязательный объект используется для представления нулевого значения с отсутствующим значением. Этот класс имеет различные служебные методы, облегчающие коду обрабатывать значения как «доступные» или «недоступные» вместо проверки нулевых значений. Он введен в 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
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