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说:
除了……正如@Tim指出的那样……即使你不需要TestMain.class文件,你仍然需要包含lambda代码的TestMain $xxx.class文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |