Необязательно определяется как класс контейнеров в Java, или, скорее, хранится контейнер с одним элементом.
Контейнерный объект, который может или не может содержать не ненулевое значение.
Необязательная структура класса необязательные свойства
Необязательный класс содержит два свойства:
Атрибут класса: пустой атрибут объекта: значение
Пустой атрибут используется для хранения дополнительного объекта со значением NULL.
Атрибут значения используется для хранения не нулевых объектов.
Необязательный метод
Необязательно имеет два метода строительства, оба из которых изменены частными.
private необязательный () {this.value = null;} private Необязательный (t value) {this.value = objects.requirenonlull (value);}Метод конструкции без параметра используется для инициализации пустого. Конструктор параметров используется для инициализации не нулевых объектов.
Поскольку конструктор изменен, чтобы быть частным, необязательно может вызывать объекты только с помощью методов класса, если он хочет создать экземпляр. Необязательно предоставляет три метода класса.
Пусто: возвращает необязательный объект с значением NULL OF: Возвращает значение не нулевого необязательного объекта Nullable: значение значения возвращает соответствующий необязательный объект в соответствии с тем, является ли параметр нулевым или нет.
public static <t> необязательный <t> empty () {необязательный <t> t = (необязательный <t>) пусто; return t;} public static <t> необязательный <t> of (t value) {return new nectail <> (value);} public static <t> необязательный <t> ofnullable (t value) {return value == null? empty (): of (value);}Пример метода введение
| метод | Тип параметра | Возврат тип | иллюстрировать | |
|---|---|---|---|---|
| получать | никто | Т | Значение выбрасывает nosucchelementException исключение для NULL | |
| Ispresent | никто | логический | Если значение является нулевым, false будет возвращено | |
| Ifpresent | Потребитель <? Супер Т> | пустота | Если необязательный экземпляр имеет значение, вызовите потребителя для него, в противном случае он не будет обработан. | |
| фильтр | Предикат <? Супер Т> | Необязательно <t> | Если значение существует и удовлетворяет предоставленному предикату, возвращается дополнительный объект, включая значение; В противном случае возвращается пустой дополнительный объект | |
| карта | Функция <? Супер Т, расширяет u> | Необязательно <u> | Если значение существует, предоставленный вызов функции отображения выполняется на значении, а необязательный объект <U> возвращается. | |
| плоская карта | Функция <? Super T, необязательный <u>> | Необязательно <u> | Если значение существует, предоставленный вызов функции отображения выполняется на значении, возвращая не нулевой необязательный объект. | |
| Орельс | Т | Т | Вернуть его, если есть значение, в противном случае вернуть значение по умолчанию | |
| Orelseget | Поставщик <? расширяет t> | Т | Возвращает значение, если есть значение, в противном случае возвращает значение, сгенерированное указанным интерфейсом поставщика | |
| OreLsethrow | Поставщик <? расширяет x> | <X расширяет бросок> | Вернуть его, если есть значение, в противном случае исключено исключение, сгенерированное указанным интерфейсом поставщика | |