ホームページ >Java >&#&チュートリアル >ダミーインターフェイスを作成せずに Java Lambda をシリアル化するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。