1. orElse方法与orElseGet方法对比表
Optional内对象参数效果注释null对象相同orElse和orElseGet方法都会返回参数对象
不为null对象相同返回Optional内对象null有返回值的函数相同orElse和orElseGet方法都会返回参数内函数返回值不为null有返回值的函数不同返回Optional内对象,但orElseGet不会执行函数内容,orElse会执行函数内容2. 简单示例(仅针对orElse与orElseGet方法不同的情况,即Optional内对象不为null,且参数为有返回值函数)
2.1 准备类
public class Staff { String name; Integer age; ... // getter setter }2.2 orElse 和 orElseGet的对比
@Test void optionalTest(){ Staff staff = new Staff("Jerome",12); System.out.println("----------------------orElseGet---------------------------"); staffName = Optional.ofNullable(staff).map(s -> s.getName()).orElseGet(this::getName); System.out.println(staffName); System.out.println("----------------------orElse---------------------------"); staffName = Optional.ofNullable(staff).map(s -> s.getName()).orElse( getName()); System.out.println(staffName); } private String getName(){ System.out.println("Get String if null"); return "Get String"; }显示效果
----------------------orElseGet--------------------------- Jerome ----------------------orElse--------------------------- Get String if null Jerome