Java 8 — необязательный класс
Необязательный объект-контейнер, используемый для хранения ненулевых объектов. Необязательный объект используется для представления null с отсутствующим значением. Этот класс имеет различные служебные методы, облегчающие коду обработку значений как «доступных» или «недоступных» вместо проверки нулевых значений. Он появился в Java 8 и похож на опциональный в Guava.
Объявление класса
Ниже приведено объявление для java.util.Optional. класс —
public final class Optional<T> extends Object
Метод класса
Сер.№ | Метод и описание |
1 | <тд> статический Необязательный пустой()
Возвращает пустой необязательный экземпляр.
2 | <тд> логическое равенство (объект obj)
Указывает, является ли какой-либо другой объект «равным» этому необязательному.
3 | <тд> Необязательный фильтр(Predicate super predicate)
Если значение присутствует и значение соответствует заданному предикату, возвращается необязательный параметр, описывающий значение, в противном случае возвращается пустой необязательный элемент.
4 | <тд> Необязательный flatMap(Функция super T,Необязательный> сопоставитель)
Если значение присутствует, оно применяет к нему предоставленную функцию сопоставления с факультативом, возвращает этот результат, в противном случае возвращает пустое факультативное значение.
5 | <тд> Получить()
Если значение присутствует в этом необязательном параметре, возвращает значение, в противном случае генерируется исключение NoSuchElementException.
6 | <тд> целый хэш-код()
Возвращает значение хэш-кода текущего значения, если оно есть, или 0 (ноль), если значение отсутствует.
7 | <тд> void ifPresent(Consumer super T> потребитель)
Если значение присутствует, он вызывает указанного потребителя со значением, в противном случае ничего не делает.
8 | <тд> логическое значение isPresent()
Возвращает true, если присутствует значение, иначе false.
9 | <тд> Дополнительная карта (функция super T,? extends U> mapper)
Если значение присутствует, применяет к нему предоставленную функцию сопоставления и, если результат не равен нулю, возвращает необязательный параметр, описывающий результат.
10 | <тд> статический Необязательный из (значение T)
Возвращает необязательный элемент с указанным текущим ненулевым значением.
11 | <тд> статический Необязательный ofNullable(значение T)
Возвращает необязательный элемент, описывающий указанное значение, если он не равен нулю, в противном случае возвращает пустой необязательный элемент.
12 | <тд> T orElse(T другое)
Возвращает значение, если оно присутствует, иначе возвращает другое.
13 | <тд> T orElseGet(Поставщик расширяет T> другое)
Возвращает значение, если оно присутствует, в противном случае вызывает другое и возвращает результат этого вызова.
14 | <тд> T orElseThrow(Supplier extends X> exceptionSupplier)
Возвращает содержащееся значение, если оно присутствует, в противном случае генерирует исключение, которое должно быть создано предоставленным поставщиком.
15 | <тд> Строка toString()
Возвращает непустое строковое представление этого параметра, подходящее для отладки.
Этот класс наследует методы от следующего класса —
Необязательный пример
Создайте следующую программу 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