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