/*
Optional 容器类常用方法
Optional.of(T t) 创建一个Optional实例
Optional.empty() 创建一个空的Optional实例
Optional.ofNullable(T t) 若t不为null,则创建Optional实例,否则创建空实例
isPresent():判断是否包含值
orElse(T t):如果对象包含值,返回该值,否则返回t
orElseGet(Supplier s):如果对象包含值,返回该值,否返回 s 获取的值
map(Function f): 如果有值对其进行处理,并返回处理后的Optional,否则返回Optional.empty()
flatMap(Function map) : 与map类似,要求返回值是Optional
*/
Optional<Book> op = Optional.of(new Book());
System.out.println(op.get());
Optional<Book> op2 = Optional.ofNullable(new Book());
if(op2.isPresent()){
System.out.println(op2.get());
}
Book book = op2.orElse(new Book());
Book book2 = op2.orElseGet(()-> new Book());
Optional<String> str = op2.map(e-> e.getName());
Optional<String> str2 = (Optional<String>) op2.flatMap(e-> Optional.of(e.getName()));