首页 >Java >java教程 >如何在不创建虚拟接口的情况下序列化 Java Lambda?

如何在不创建虚拟接口的情况下序列化 Java Lambda?

Linda Hamilton
Linda Hamilton原创
2024-12-13 17:25:19990浏览

How Can I Serialize a Java Lambda Without Creating a Dummy Interface?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn