最近物覚えが悪くて。。。備忘録です。
オブジェクト(Class)をバイト配列に変換する方法
自分でソースを書くのが面倒なので、シリアライズするのが一番楽なんですが、
ObjectOutputStream(ObjectInputStream)って単独でNewできないんですよね。
Inputストリームのインスタンスを作成するのって結構めんどくさい。
ファイルを使えばできますが。。。
シリアライズするときに、例えばDBに入れたいときなど、
ファイルを使いたくない場合、ByteArrayOutputStream(ByteArrayInputStream)を使えばいいようです
SendMessageと言うものを適当に作って試してみます。
//オブジェクトをBYTE配列に変換(class SendMessage)
public static byte getByteObject(SendMessage sendMsg)
{
byte retObject = null;
try {
ByteArrayOutputStream byteos = new ByteArrayOutputStream();
ObjectOutputStream objos = new ObjectOutputStream(byteos);
objos.writeObject(sendMsg);
objos.close();
byteos.close();
retObject = byteos.toByteArray();
} catch (IOException ex) {
// TODO 自動生成された catch ブロック
ex.printStackTrace();
}return retObject;
}//BYTE配列をオブジェクトに変換
public static SendMessage createSendMessageObject(byte[] objByte)
{
SendMessage sendMsg = null;
try {
ByteArrayInputStream byteis = new ByteArrayInputStream(objByte);
ObjectInputStream objis = new ObjectInputStream(byteis);
sendMsg = (SendMessage) objis.readObject();
byteis.close();
objis.close();
} catch (IOException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
return sendMsg;}