問題:
シリアル化可能なクラスが AppMessage と呼ばれるシナリオを考えてみましょう。ソケット経由で別のマシンに送信し、受信したバイトから再構築する必要があります。目的は、Java でこの目的を達成する手法を探ることです。
解決策:
送信用のバイト配列を準備するには、serialize メソッドを利用します:
static byte[] serialize(final Object obj) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try (ObjectOutputStream out = new ObjectOutputStream(bos)) { out.writeObject(obj); out.flush(); return bos.toByteArray(); } catch (Exception ex) { throw new RuntimeException(ex); } }
逆に、バイト配列からオブジェクトを再作成するには、デシリアライズを使用します。メソッド:
static Object deserialize(byte[] bytes) { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); try (ObjectInput in = new ObjectInputStream(bis)) { return in.readObject(); } catch (Exception ex) { throw new RuntimeException(ex); } }
これらのメソッドにより、Java オブジェクトの効率的なシリアル化と逆シリアル化が可能になり、受信側マシンでの再構築のためにソケット経由での送信が容易になります。
以上がソケット通信のために Java オブジェクトをシリアル化および逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。