JDK8之Optional新特性
Posted cbxblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8之Optional新特性相关的知识,希望对你有一定的参考价值。
/** * JDK8 Optional * Created by chengbx on 2018/5/28. * Optional<T> 类是一个容器类,代表一个值存在或者不存在,原来用null表示一个值不存在, * 现在Optional可以更好的表达这个概念。并且可以避免空指针异常。 * Optional.of(T t):创建一个 Optional实例 * Optional. empty():创建一个空的 Optional实例 * Optional. ofNullable(T t):若t不为nul1,创建 Optional实例,则创建空实例 * ispresent():判判断是否包含值 * orElse(T t):如如果调用对象包含值,返返回该值,否则返回t * orElseGet( Supplier s):如果调用对象包含值,返返回该值,否则返回s获取取的值 * map( Function f):如如果有值对其处理,并返回处理后的 Optional,否则返回 Optional、 empty * flatMap( Function mapper):与map类似,要求返回值必须是 Optional * */ public class TestOptional { @Test public void test1(){ Optional<Employee> optional = Optional.of(null); Employee emp = optional.get(); System.out.println(emp); } @Test public void test2(){ Optional<Employee> op = Optional.empty(); System.out.println(op.get()); } @Test public void test3(){ Optional<Employee> op = Optional.ofNullable(null); if(op.isPresent()){ System.out.println(op.get()); } Employee emp = op.orElse(new Employee("cbx",18,12000)); System.out.println(emp); Employee emp2 = op.orElseGet(() -> new Employee()); System.out.println(emp2); } @Test public void test4(){ Optional<Employee> op = Optional.of(new Employee( "张三", 18, 9999.99)); Optional<String> op2 = op.map(Employee::getName); System.out.println(op2.get()); Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName())); System.out.println(op3.get()); } }
以上是关于JDK8之Optional新特性的主要内容,如果未能解决你的问题,请参考以下文章
JDK8新特性:使用Optional:解决NPE问题的更干净的写法