[英]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.