Che*_*tah 3 java lambda serialization java-8
我正在搞乱lambdas的Java序列化.
我有两个完全独立的项目,其中包含一个类.
项目1:
class TestMain {
public static void main(String[] args) {
Runnable r = (Runnable & Serializable) () -> {};
// Serialize r to C:/file.ser;
}
}
Run Code Online (Sandbox Code Playgroud)
项目2:
class TestMain2 {
public static void main(String[] args) {
// Deserialize C:/file.ser to runnable;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在尝试反序列化runnable时,它会抛出一个异常,说它无法找到 TestMain
......有什么办法可以避免这种情况吗?
解决方案是TestMain在反序列化时包含在类路径中.
lambda隐含地依赖于声明它的外部类.
此外,Java Tutorial说:
但是,与内部类一样,强烈建议不要对lambda表达式进行序列化.
除此之外......正如@Tim所指出的......即使你不需要该TestMain.class文件,你仍然需要TestMain$xxx.class包含lambda代码的文件.
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |