12

重複の可能性:
Javaで任意のオブジェクトをバイト配列に変換する

キャッシュする必要があるクラスがあります。キャッシュ API は、キャッシュするインターフェイスを提供しますbyte[]。私のクラスにはフィールドが含まれておりList<Author>Authorは別のクラスです。キャッシングList<Author>のために私が頼る正しい方法は何ですか? byte[]そしてbyte[]、キャッシュから取得して再構築しList<Author>ますか?

クラスの詳細Author: 非常に単純で、2 つのStringフィールドしかありません。1つのStringフィールドが可能nullです。

4

3 に答える 3

28

作成者クラスは実装する必要がありますSerializable

次にObjectOutputStream、オブジェクトをシリアル化し、ByteArrayOutputStreamバイトとして書き込むために使用できます。

次に、ObjectInputStream を使用してデシリアライズし、元に戻します。

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
    oos.writeObject(list);
    byte[] bytes = bos.toByteArray();
于 2013-01-03T18:30:49.253 に答える
2

Authorクラスをシリアライズ可能にし、リストを に裏打ちObjectOutputStreamされたに書き込みByteArrayOutputStreamます。

于 2013-01-03T18:31:00.613 に答える
1

クラスをシリアライズ可能にします。ByteStream を介して ObjectStream を作成し、リストを ObjectStream に書き込みます。バイト バッファを ByteStream からキャッシング API に渡します。

キャッシュから取得するときは、プロセスを逆にします。キャッシュ API によって返された byte[] から ByteStream を作成します。ByteStream から ObjectStream を作成します。ObjectStream からコレクションを読み取ります。

于 2013-01-03T18:31:19.563 に答える