簡體   English   中英

有什么方法可以序列化不可序列化的類嗎?

[英]Is there any way to serialize a non-serializable class?

我想通過序列化將我的學校對象保存到我的數據庫中。 問題是我可以更新School類並實現可序列化的接口,但是問題是像Student,CityInfo這樣的字段太多,並且其中沒有一個是可序列化的。 有什么方法可以在不更新類的情況下用所有這些字段序列化School對象?

public class School{
    private Student student;
    private CityInfo info;
    ....

}

您必須實現自己的序列化和反序列化方法。

在這里查看“自定義協議”部分。

http://www.oracle.com/technetwork/articles/java/javaserial-1536170.html

就Java字節碼序列化而言,如果不自定義序列化過程就無法完成。

就像這里所說的: http : //www.jguru.com/faq/view.jsp?EID=34802

“當序列化一個對象時,序列化機制通過鏈接繼承層次結構來工作,依次保存每個Serializable超類的狀態。當序列化到達第一個不可序列化的超類時,序列化將停止。

反序列化時,不是從流中恢復此第一個不可序列化的超類的狀態,而是通過調用該類的無參數構造函數來恢復它。 如果無參數構造函數不足以滿足您的目的,則必須使用writeObject()和readObject()自定義子類的序列化,以便從您認為必要的不可序列化超類中寫出並還原任何信息。”

但是,為什么必須使用內置的Java序列化? 有很多庫可以將您的公共字段(以及帶有適當的getter和setter的字段)序列化為JSON,XML或其他格式。 這還具有使數據更具可移植性的額外好處。

暫無
暫無

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

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