java懶惰評估實現方法
更新時間:2021年05月14日 09:02:09 作者:小妮淺淺
這篇文章主要介紹了java懶惰評估如何實現的相關內容及實例,有興趣的朋友們可以學習參考下。
1、說明
惰性評估是將表達式的評估延遲到需要時才進行的過程。Java是嚴格的立即賦值評估。
可以使用lambda表達式和高階函數將其重寫為延遲評估的版本。
2、實例
public class LazySample {
public static void main(String[] args) {
//這是一個lambda表達式,表現為閉包
UnaryOperator<Integer> add = t -> {
System.out.println("executing add");
return t + t;
};
//這是一個lambda表達式,表現為閉包
UnaryOperator<Integer> 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 <T, R> R addOrMultiply(
boolean add, Function<T, R> onAdd,
Function<T, R> onMultiply, T t
) {
// Java的?會懶惰計算表達式,因此僅執(zhí)行所需的方法
return (add ? onAdd.apply(t) : onMultiply.apply(t));
}
}
實例擴展:
public class SingleLock<V> implements Lazy<V> {
private Callable<V> codeBlock;
private V value;
public SingleLock(Callable<V> 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);
}
}
}
到此這篇關于java懶惰評估實現方法的文章就介紹到這了,更多相關java懶惰評估如何實現內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java?properties?和?yml?的區(qū)別解析
properties和yml都是Spring?Boot支持的兩種配置文件,它們可以看做Spring?Boot在不同時期的兩種“產品”,這篇文章主要介紹了Java?properties?和?yml?的區(qū)別,需要的朋友可以參考下2023-02-02
IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法)
這篇文章主要介紹了IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法),本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Java中static和static?final的區(qū)別詳解
這篇文章主要介紹了Java中static和static?final的區(qū)別詳解,開發(fā)時我們經常用到static以及static?final來修飾我們的字段變量,那么他們到底有什么區(qū)別呢?其實他們的區(qū)別可以用使用字節(jié)碼文件來解析,需要的朋友可以參考下2023-10-10

