欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java8 Optional

程序员文章站 2022-06-06 23:38:33
...
// 创建实例
Optional<Employee> op1 = Optional.of(new Employee());

// 创建空的Optional实例
Optional<Employee> op2 = Optional.empty();

// 如果参数不为null则创建实例,否则创建空实例
Optional<Employee> op3 = Optional.ofNullable(null);

// 判断是否包含值:isPresent()
if (op3.isPresent()) {
    System.out.println(op3.get());
}

// 如果包含就返回,否则返回参数:orElse(T t)
op3.orElse(new Employee());

// 如果包含就返回,否则返回参数获取的值:orElseGet(Supplier s)
op3.orElseGet(() -> new Employee());

op.map & op.flatMap

// map(Function f):
//      如果有值就使用Function处理并返回处理后的Optional
//      否则返回Optional.empty()
Optional<Employee> op = Optional.ofNullable(
        new Employee("张三", 18, 8888.8, Employee.Status.FREE));

// 有Employee,进行处理,取出名字
Optional<String> str = op.map((e) -> e.getName());
System.out.println(str.orElse("null"));

// flatMap:与map类似,只不过要求返回Optional
Optional<String> str2 = op.flatMap((e) -> Optional.of(e.getName()));
System.out.println(str2.orElse("null"));

转载于:https://www.jianshu.com/p/c0657380d7c7