類如下,這裏爲了測試 僅僅用了內部類
class Book implements Serializable {
int i = 1;
}
對象轉化成字節
Book b = new Book();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = null;
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(b);
byte[] bytes = byteArrayOutputStream.toByteArray();
字節轉化成對象
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
ObjectInputStream objectInputStream = null;
objectInputStream = new ObjectInputStream(byteArrayInputStream);
Book book = (Book) objectInputStream.readObject();
但是報錯了,原因在於這是非靜態內部類,會隱式包含外部類的引用
所以修改類爲
static class Book implements Serializable {
int i = 1;
}
就可以了
此外,這是一個很好的克隆機制,因爲java本身的clone機制是存在問題的
---------------------
作者:fvcasdgva
來源:CSDN
原文:https://blog.csdn.net/qq_36523667/article/details/79115910