Я могу сериализовать lambda со следующим синтаксисом:
Runnable r = (Runnable & Serializable) () -> System.out.println("");
try (ObjectOutput oo = new ObjectOutputStream(new ByteArrayOutputStream())) {
oo.writeObject(r);
}
Однако, если я получаю лямбда из клиентского кода, и он не был передан соответствующим образом, я не могу его сериализовать.
Как я могу сериализовать r
ниже без изменения его определения:
Runnable r = () -> System.out.println("");
Я попытался сериализовать "производный" объект:
Runnable r1 = (Runnable & Serializable) r::run;
Runnable r2 = (Runnable & Serializable) () -> r.run();
но в каждом случае oo.writeObject(rxxx);
выходит из строя с NotSerializableException
.