必须1. 在Lazy的基础上,2. 使用Lazy类中的方法 操纵Lazy才是Lazy的。
//例如要使用if-else
if(booleanCondition(someA)) {
return someB;
} else {
return someC;
}
//转为Lazy:
//如果没有可以在其基础上操作的Lazy, 就创造一个
Lazy<typeOfSomeA> a = new Lazy<>(someA);
//1. 如果内容多,可以先filter,再map
// 如果同样的booleanCondition需要判断并使用多次,此法可以减少计算次数
Lazy<Boolean> b = a.filter(x -> booleanCondition(x));
Lazy<typeOfSomeB> c = b.map(x -> x ? someB : someC);
return c;
//2. 本质上都可以化为一个map
return a.map(x -> booleanCondition(x) ? someB: someC);