/**
* 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());
}
}