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的?會懶惰計算表達式,因此僅執行所需的方法
        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懶惰評估如何實現內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: