在 Java 中序列化 Lambda
尝试在 Java 中序列化 lambda 可能会导致 NotSerializedException。本文探讨了如何优雅地克服这个障碍,而不需要创建 SerializedRunnable“虚拟”接口。
在提供的示例中,lambda 定义为:
Runnable r = () -> System.out.println("Can I be serialized?");
将此 lambda 写入ObjectOutputStream 抛出NotSerializedException。
解决方案
Java 8 引入了将对象强制转换为类型交集的功能。这可以在序列化的上下文中利用,如下所示:
Runnable r = (Runnable & Serializable)() -> System.out.println("Serializable!");
此转换有效地修改了 lambda 以实现 Runnable 和 Serialized 接口。因此,lambda 变得可序列化,而不需要单独的“虚拟”接口。
以上是如何在不创建虚拟接口的情况下序列化 Java Lambda?的详细内容。更多信息请关注PHP中文网其他相关文章!