簡體   English   中英

為什么ArrayList實現Serializable?

[英]Why does ArrayList implement Serializable?

我試圖用JAXB序列化ArrayList並失敗。 這是因為elementData被標記為瞬態?

為什么ArrayList實現Serializable Inferface並且它的數據是瞬態的?

我嘗試序列化Serializables的ArrayList:

JAXBElement<ArrayList> jaxbElement = new JAXBElement<ArrayList>(new QName(ArrayList.class.getSimpleName()), ArrayList.class, allEntities);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(jaxbElement, System.out);

如何通過JAXB執行此操作?

ArrayList實現Serializable,因此它可以被序列化,這正是私有后備數組是瞬態的原因,因此它不與類中的其他數據一起序列化,因為所有數據都由ArrayList的writeObject和readObject方法處理。

這樣做是因為它提供了自定義的readObject和writeObject方法,這些方法比默認方法更好地進行序列化。 具體來說,writeObject方法只寫入元素的大小和順序。 這避免了序列化私有數組對象,其中1)具有其自己的頭和開銷,並且2)通常用空值填充。 節省空間可能很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM