JAVA Optional类用法分享
程序员文章站
2024-02-21 22:55:04
optional在java中被定义为一个容器类,更确切的说只存一个元素的容器。
container object which may or may not contain...
optional在java中被定义为一个容器类,更确切的说只存一个元素的容器。
container object which may or may not contain a non-null value.
optional类结构 optional属性
optional类中包含两个属性:
类属性:empty 对象属性:value
empty属性用来存放一个value为null的optional对象。
value属性用来存放非null对象。
optional方法
optional的有两个构造方法,都被private修饰。
private optional() { this.value = null; } private optional(t value) { this.value = objects.requirenonnull(value); }
无参构造方法用来初始化empty。有参构造方法用来初始化非null对象。
因为构造方法被修饰为私有的,optional想要实例化对象只能通过类方法调用。optional提供三个类方法。
empty:返回value为null的optional对象 of:返回value非null的optional对象 ofnullable:value的值根据参数是否为null返回对应的optional对象
public static<t> optional<t> empty() { optional<t> t = (optional<t>) empty; return t; } public static <t> optional<t> of(t value) { return new optional<>(value); } public static <t> optional<t> ofnullable(t value) { return value == null ? empty() : of(value); }
实例方法介绍
方法 | 参数类型 | 返回类型 | 说明 | |
---|---|---|---|---|
get | 无 | t | value为null抛出nosuchelementexception异常 | |
ispresent | 无 | boolean | value为null则返回false | |
ifpresent | consumer<? super t> | void | 如果optional实例有值则为其调用consumer,否则不做处理 | |
filter | predicate<? super t> | optional<t> | 如果值存在并且满足提供的谓词,就返回包括该值的optional对象;否则返回一个空的optional对象 | |
map | function<? super t, ? extends u> | optional<u> | 如果值存在,就对该值执行提供的mapping函数调用,返回optional<u>对象 | |
flatmap | function<? super t, optional<u>> | optional<u> | 如果值存在,就对该值执行提供的mapping函数调用,返回非null optional对象 | |
orelse | t | t | 如果有值则将其返回,否则返回一个默认值 | |
orelseget | supplier<? extends t> | t | 如果有值则将其返回,否则返回一个由指定的supplier接口生成的值 | |
orelsethrow | supplier<? extends x> | <x extends throwable> | 如果有值则将其返回,否则抛出一个由指定的supplier接口生成的异常 |
上一篇: Android自定义WaveView实现波浪进度效果
下一篇: Java动态代理分析及理解