加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – lambda的序列化[复制]

发布时间:2020-12-15 04:26:10 所属栏目:Java 来源:网络整理
导读:参见英文答案 Unable to deserialize lambda????????????????????????????????????2个 我正在搞乱lambdas的Java序列化. 我有两个完全独立的项目,其中包含一个类. 项目1: class TestMain { public static void main(String[] args) { Runnable r = (Runnable
参见英文答案 > Unable to deserialize lambda????????????????????????????????????2个
我正在搞乱lambdas的Java序列化.

我有两个完全独立的项目,其中包含一个类.

项目1:

class TestMain {

    public static void main(String[] args) {
        Runnable r = (Runnable & Serializable) () -> {};

        // Serialize r to C:/file.ser;
    }
}

项目2:

class TestMain2 {

    public static void main(String[] args) {
        // Deserialize C:/file.ser to runnable;
    }
}

但是,在尝试反序列化runnable时,它会抛出异常,说它无法找到TestMain

……有什么办法可以避免这种情况吗?

解决方法

解决方案是在反序列化时在类路径中包含TestMain.

lambda隐含地依赖于声明它的外部类.

此外,Java Tutorial说:

However,like inner classes,the serialization of lambda expressions is strongly discouraged.

除了……正如@Tim指出的那样……即使你不需要TestMain.class文件,你仍然需要包含lambda代码的TestMain $xxx.class文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读