someFunction()被执行,因为它是传递给
方法的参数,传递给
方法的参数在执行
方法之前被计算.为了避免执行,您应该在Supplier实例中传递someFunction().
使用orElseGet
而不是orElse:
Optional.ofNullable(someValue).orElseGet(SomeClass::someFunction);
要么
Optional.ofNullable(someValue).orElseGet(()->someFunction());