Optional类简介

Optional类是Java8的新特性,可以用来更优雅的判空,处理null的问题。

  1. Optional类构造方法是私有的,不能通过new创建对象,不过提供了三个方法创建对象。
  • empty(),创建一个空的Optional对象
Optional<String> empty = Optional.empty();
  • of(),把指定的值封装为Optional对象,不能为null
Optional<String> o = Optional.of("str");
//传入null,会抛出NullPointerException
//Optional<String> o = Optional.of(null);
  • ofNullable(),把指定的值封装为Optional对象,可以为null
Optional<Object> o1 = Optional.ofNullable(null);
  1. 常用方法
  • get(),返回Optional对象封装的值,空的Optional对象会抛出NoSuchElementException
Optional<String> o = Optional.of("str");
//s为"str"
String s = o.get();
  • isPresent(),如果创建的Optional中的值存在,返回true,否则返回false
Optional<String> empty = Optional.empty();
Optional<String> o = Optional.of("str");
Optional<Object> o1 = Optional.ofNullable(null);
//true
boolean present0 = o.isPresent();
//false
boolean present = o1.isPresent();
//false
boolean present1 = empty.isPresent();
  • map(),如果创建的Optional中的值存在,对该值执行提供的Function函数调用
Optional<String> empty = Optional.empty();
Optional<String> o = Optional.of("str");
Optional<Integer> integer = o.map(v -> v.length());
Optional<Integer> integer1 = empty.map(v -> v.length());
//true
boolean present2 = integer.isPresent();
//false
boolean present3 = integer1.isPresent();
  • orElse(),如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
Optional<String> empty = Optional.empty();
Optional<String> o = Optional.of("str");
//oElse为"str",还是原来的值
String oElse = o.orElse("oElse");
//anElse 为"emptyElse"
String anElse = empty.orElse("emptyElse");

其他方法

方法 描述
empty 创建一个空的Optional对象
of 把指定的值封装为Optional对象,如果指定的值为null,则抛出NullPointerException
ofNullable 把指定的值封装为Optional对象,如果指定的值为null,则创建一个空的Optional对象
get 如果创建的Optional中有值存在,则返回此值,否则抛出NoSuchElementException
isPresent 如果创建的Optional中的值存在,返回true,否则返回false
ifPresent 如果创建的Optional中的值存在,则执行该方法的调用,否则什么也不做
map 如果创建的Optional中的值存在,对该值执行提供的Function函数调用
flagMap 如果创建的Optional中的值存在,就对该值执行提供的Function函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象
orElse 如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
orElseGet 如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值
orElseThrow 如果创建的Optional中有值存在,则返回此值,否则抛出一个由指定的Supplier接口生成的异常
filter 如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否则返回一个空的Optional对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容