所以我在一個項目中使用專有的java庫,我無法訪問源代碼。Java:如何序列化第三方庫生成的Java對象?
它拋出一個Message對象,顯然我不能實現Serializable。它在整個運行時間生成。
我的選擇是什麼?有沒有辦法將Message對象序列化成一個字節數組並返回到對象中?
更新:我能夠將對象序列化爲JSON(http://code.google.com/p/json-io/),但由於返回null而無法將其轉換回對象。所以我想用下面的代碼將它轉換爲字節數組。還是行不通。
public byte[] toByteArray (Object obj)
{
byte[] bytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
oos.close();
bos.close();
bytes = bos.toByteArray();
}
catch (IOException ex) {
//TODO: Handle the exception
}
return bytes;
}
public Object toObject (byte[] bytes)
{
Object obj = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream (bytes);
ObjectInputStream ois = new ObjectInputStream (bis);
obj = ois.readObject();
}
catch (IOException ex) {
//TODO: Handle the exception
}
catch (ClassNotFoundException ex) {
//TODO: Handle the exception
}
return obj;
}
你知道對象是否已經實現了Serializable?如果你不知道,你可以試試看看它是否有效。 –
它不能實現Serializable。 – KJW
嘗試將其子類化。 –