カテゴリー
未分類

JavaでByte[]とObject(Serializable)を相互変換

意外と使うことが多いのでメモ程度にライブラリを作った。

public final class ByteArray {
    static byte[] fromObject(Object o) throws IOException{
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutput out = new ObjectOutputStream(bos);
        out.writeObject(o);
        byte[] bytes = bos.toByteArray();
        out.close();
        bos.close();
        return bytes;
    }
    static Object toObject(byte[] bytes) throws OptionalDataException, StreamCorruptedException, ClassNotFoundException, IOException{
        return new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject();
    }
}

現在Androidの開発をやっているのですが、AIDLで通信するときにプリミティブ型(byte,int,String,and so on)のデータしか送れない。

本来ならParcelableを使わないといけないらしいのですが、そんなもの守る気はありません←

というわけで上のメソッドを使えば簡単にSerializableを実装しているObjectとByteを相互変換できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です