/**
* 对象转byte
* @param obj
* @return
*/
private byte[] ObjectToByte(Object obj) {
byte[] bytes = null;
try {
// object to bytearray
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(obj);
bytes = bo.toByteArray();
bo.close();
oo.close();
} catch (Exception e) {
System.out.println("translation" + e.getMessage());
e.printStackTrace();
}
return bytes;
}
/**
* byte转对象
* @param bytes
* @return
*/
private Object ByteToObject(byte[] bytes) {
Object obj = null;
try {
// bytearray to object
ByteArrayInputStream bi = new ByteArrayInputStream(bytes);
ObjectInputStream oi = new ObjectInputStream(bi);
obj = oi.readObject();
bi.close();
oi.close();
} catch (Exception e) {
System.out.println("translation" + e.getMessage());
e.printStackTrace();
}
return obj;
}
//----------------------------------------------
/**
* 引数のオブジェクトをbyte配列に変換する。
* @param param シリアライズ対象のオブジェクト
* @return byte配列
*/
public static byte[] serializeParam(Object param) {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objOutStream = new ObjectOutputStream(out)) {
objOutStream.writeObject(param);
return out.toByteArray();
} catch (IOException e) {
LOG.error("シリアライズ時に異常発生。", e);
return null;
}
}
/**
* バイト配列を引数のclazzオブジェクトに変換する。
* @param b バイト配列
* @param clazz 変換後のクラス
* @param <T> 変換後のクラス
* @return 変換後のオブジェクト
*/
public static <T> T deSerializeParam(byte[] b, Class<T> clazz) {
try (ByteArrayInputStream in = new ByteArrayInputStream(b);
ObjectInputStream objInStream = new ObjectInputStream(in)) {
return clazz.cast(objInStream.readObject().getClass());
} catch (IOException | ClassNotFoundException e) {
LOG.error("デシリアライズ時に異常発生。", e);
return null;
}
}