当前位置: 移动技术网 > IT编程>开发语言>Java > JAVA Optional类用法分享

JAVA Optional类用法分享

2019年07月19日  | 移动技术网IT编程  | 我要评论

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接口生成的异常

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网