ホームページ >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 でのラムダのシリアル化

Java でラムダをシリアル化しようとすると、NotSerializableException が発生する可能性があります。この記事では、SerializableRunnable の「ダミー」インターフェイスの作成に頼ることなく、このハードルをエレガントに克服する方法を検討します。

提供された例では、ラムダは次のように定義されています。

Runnable r = () -> System.out.println("Can I be serialized?");

このラムダの書き込み先ObjectOutputStream がスローしますNotSerializableException.

ソリューション

Java 8 では、型の交差部分にオブジェクトをキャストする機能が導入されています。これは、以下に示すように、シリアル化のコンテキストで利用できます。

Runnable r = (Runnable & Serializable)() -> System.out.println("Serializable!");

このキャストは、Runnable インターフェイスと Serializable インターフェイスの両方を実装するようにラムダを効果的に変更します。その結果、ラムダは別の「ダミー」インターフェイスを必要とせずにシリアル化可能になります。

以上がダミーインターフェイスを作成せずに Java Lambda をシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。