optional 类
java.util.Optional<T>类是一个封装了Optional值的容器对象,Optional值可以为null,如果值存在,调用isPresent()方法返回true,调用get()方法可以获取值。
Optional类包含的方法
of
of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException 。
Optional<Object> objectOptional1 = Optional.of("1234");
Optional<Object> objectOptional = Optional.of(null);
ofNullable
ofNullable与of方法相似,唯一的区别是可以接受参数为null的情况。示例如下:
Optional<Object> objectOptional1 = Optional.of("1234");
Optional<Object> objectOptional = Optional.ofNullable(null);
System.out.println("-------" + objectOptional1);
System.out.println("=======" + objectOptional);
isPresent
值存在返回true,否则返回false。
Optional<Object> objectOptional1 = Optional.of("1234");
Optional<Object> objectOptional = Optional.ofNullable(null);
System.out.println("-------" + objectOptional1);
System.out.println("=======" + objectOptional);
if (objectOptional1.isPresent()){
System.out.println(objectOptional1.get());
}
ifPresent
如果Optional实例有值则为其调用consumer,否则不做处理
Optional<Object> objectOptional = Optional.of("1234");
System.out.println("-------" + objectOptional);
objectOptional.ifPresent(System.out::println);
输出:
-------Optional[1234]
1234
map
如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。
Optional<String> objectOptional = Optional.of("Sddd");
Optional<String> stringOptional = objectOptional.map(item -> item.toLowerCase());
System.out.println(stringOptional.orElse("no value"));
flatMap
Optional<String> objectOptional = Optional.of("Sddd");
Optional<String> stringOptional = objectOptional.flatMap(item -> Optional.of(item.toLowerCase()));
System.out.println(stringOptional);
输出:
Optional[sddd]