lambda 在创建后对其进行序列化
2022-09-04 02:50:49
我可以使用以下语法序列化 lambda:
Runnable r = (Runnable & Serializable) () -> System.out.println("");
try (ObjectOutput oo = new ObjectOutputStream(new ByteArrayOutputStream())) {
oo.writeObject(r);
}
但是,如果我从客户端代码收到 lambda,并且它尚未正确转换,则无法对其进行序列化。
如何在不更改其定义的情况下序列化下面的r
:
Runnable r = () -> System.out.println("");
我试图序列化一个“派生”对象:
Runnable r1 = (Runnable & Serializable) r::run;
Runnable r2 = (Runnable & Serializable) () -> r.run();
但在每种情况下,都会失败,并带有 .oo.writeObject(rxxx);
NotSerializableException