java把對象轉化成流,和把流轉化成對象(包含clone機制+序列化機制)

類如下,這裏爲了測試 僅僅用了內部類

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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章