java懒惰评估实现方法

网友投稿 289 2022-10-25


java懒惰评估实现方法

1、说明

惰性评估是将表达式的评估延迟到需要时才进行的过程。java是严格的立即赋值评估。

可以使用lambda表达式和高阶函数将其重写为延迟评估的版本。

2、实例

public class LazySample {

public static void main(String[] args) {

//这是一个lambda表达式,表现为闭包

UnaryOperator add = t -> {

System.out.println("executing add");

return t + t;

};

//这是一个lambda表达式,表现为闭包

UnaryOperator multiply = t -> {

System.out.println("executing multiply");

return t * t;

};

//传递Lambda闭包而不是普通函数

System.out.println(addOrMultiply(true, add, multiply, 4));

System.out.println(addOrMultiply(false, add, multiply, 4));

}

//这是一个高阶函数

static R addOrMultiply(

boolean add, Function onAdd,

Function onMultiply, T t

) {

// Java的?会懒惰计算表达式,因此仅执行所需的方法

return (add ? onAdd.apply(t) : onMultiply.apply(t));

}

}

实例扩展:

public class SingleLock implements Lazy {

private Callable codeBlock;

private V value;

public SingleLock(Callable codeBlock) {

this.codeBlock = codeBlock;

}

@Override

public synchronized V get() {

if (value == null) {

setValue();

}

return value;

}

private void setValue() {

try {

value = codeBlock.call();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:显性注入代码
下一篇:盲注代码
相关文章

 发表评论

评论列表