[英]Serialization problems: objects that depend on each other and ArrayLists
我必須序列化一個項目,這是我第一次使用序列化。 在了解了這一點之后,我想到了兩個可能的問題:我的類有一個屬性,該類型是另一個不同的類,有一個屬性是第一個類(解釋不佳,但可以在代碼中看到),以及我使用ArrayLists的事實。 (我讀過的內容無法序列化)。 因此,我決定嘗試使用該項目的非常簡化的版本:
一個組,其中包含Person的ArrayList:
public class Group implements Serializable {
private static final long serialVersionUID = 1L;
private Person leader;
private List<Person> members;
private int number;
public Group(Person leader, int number) {
this.leader = leader;
this.number = number;
this.members = new ArrayList<Person>();
this.members.add(leader);
}
public void addMember(Person p) {
this.members.add(p);
}
public int getNumber() {
return number;
}
}
一個人,其中包含一組ArrayList:
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private List<Group> groups;
private String name;
public Person(String name) {
this.name = name;
this.groups = new ArrayList<Group>();
}
public Group createGroup(int number) {
Group g = new Group(this, number);
this.groups.add(g);
return g;
}
public void joinGroup(Group g) {
this.groups.add(g);
g.addMember(this);
}
}
還有一個main方法,該方法創建幾個組和人員,並使用writeObject()將其寫入文件,以及另一個main方法,該方法使用readObject()來取回對象(它僅使用readObject()並打印它們)。
由於上述原因,我沒想到它能起作用,但是它能很好地工作,所以我嘗試序列化我的主項目(更加復雜),但是卻沒用(巨大的堆棧跟蹤,只是說“ User”),是等價於人,不可序列化)。
是否有任何原因或我應該考慮的重大缺陷?
對於沒有包括我使用的兩個主要方法,以及沒有任何堆棧跟蹤或主要項目,我深表歉意,但是我不想讓這個問題過長。
我的類具有屬性是另一種類型的屬性,另一個類具有屬性是第一類的屬性(解釋不佳,但可以在代碼中看到)
難以理解。 如果您正在談論的話,Java和序列化都可以處理循環依賴關系。
和我使用ArrayLists的事實(我讀過的不能序列化)
錯誤。
簡單地說“用戶”(等同於人)不可序列化
因此, User
未實現Serializable.
是否有任何原因或我應該考慮的重大缺陷?
使User
實現可Serializable.
對於任何給您相同消息的其他類,均相同。
您需要閱讀對象序列化規范和相關的Javadoc,並停止依賴於任意Internet垃圾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.