简单来说,他就是个包装类,在我们已有的对象外面再包裹一层这个Optional对象。
话不多说,直接上干货 —— 这东西到底怎么用呢?
我们先来看看 Optional 对象的几种获取方式
1.Optional.empty()
获得一个内容为空的一个对象。
2. Optional.of(value)
获得一个包装值为 value 的一个对象
3. Optional.ofNullable(value)
return value == null ? empty() : of(value)
一般来说,我们会更多的去使用 ofNullable() 方法。
接下来我们再来说说它的几大常用 API
Optional.get()
– 返回对象的值
Person person = new Person();
person.serName("张三");
Optional.ofNullable(person).get() //return person;
Optional.isPresent()
– 判断内容是否为空
Optional.ofNullable(person).isPresent() //return true
Optional.ifPresent(Consumer c)
– 判断是否为空,不为空则执行函数
//arg-消费型接口
Optional.ofNullable(person).ifPresent(p->System.out.println(p.getName()))
Optional.filter(Predicate p)
– 过滤对象
//arg-断言型接口。 满足断言表达式则返回原Optional对象,不满足则返回空Optional对象。
Optional.ofNullable(person).filter(p->"张三".equals(p.getName))
Optional.map(Function f)
– 对包装内容进行映射
//arg-函数型接口。 return person.getName == null ? "张三" : "name为空"
Optional.ofNullable(person).map(p->person.getName).orElse("name为空")
//
Optional.orElseGet(Supplier s)
– 返回供给型接口的返回值
//arg-供给型接口。 return person == null ? person对象[张三] : person对象[李四]
Optional.ofNullable(person).orElseGet(()->new Person("李四"))
Optional.orElse()
– 包装内容为空的话,则返回 orElse() 中的对象
Optional.ofNullable(person).orElse(new Person("李四"))