保存您的lambda,以备不时之需-保存到文件
介紹
簡短的帖子,描述了如何將Java lambda持久保存到文件中以在不同的過程中重復使用。
序列化Lambda
Java 8中引入的Lambda使函數成為Java語言的一等公民(幾乎)。 它們消除了使用專用類來保存函數的需要。 但是,這是如何進行的呢?
實際上,javac劫持了包含函數的類,并添加了包含函數實現的靜態方法。 函數調用站點被新添加的靜態方法的調用替換。 有關lambda實現魔術的完整說明,請參見
文章 。
Oracle很有幫助地提供了SerializableLambda類,該類實現了lambda的可序列化形式,提供了足夠的元信息來重建調用。 我們要做的就是將lambda轉換為可序列化的,然后使用標準的標準機械來封送lambda。 以下是一些實用程序函數,用于對lambda進行序列化和反序列化。
public static <F extends Function & Serializable> void serialise(F f, String name) throws Exception {try (var oos = new ObjectOutputStream(new FileOutputStream(new File(name)))) {oos.writeObject(f);} }public static <T, R, F extends Function<T, R>> F deserialise(String name) throws Exception {try (var ois = new ObjectInputStream(new FileInputStream(name))) {return (F) ois.readObject();} } 在序列化函數中,我使用相交類型將函數轉換為Serializable。 有一個帶有測試主體的小項目
在這里演示序列化。 執行功能的主要方法:
該項目的根目錄中有一個序列化的lambda“ func-1”。 運行項目將看到func-1被覆蓋,因此第二次執行將得到與第一次不同的結果:
第一次執行:
你好–格雷格
再見–格雷格
第二次執行:
再見–格雷格
再見–格雷格
希望您喜歡這篇小文章,并發現它有趣。
翻譯自: https://www.javacodegeeks.com/2019/07/save-lambdas-rainy-day-save-file.html
總結
以上是生活随笔為你收集整理的保存您的lambda,以备不时之需-保存到文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: canon相机老款怎么充电(canon相
- 下一篇: 电脑默认网关多少(电脑上的默认网关是多少