2013-03-27 50 views
0

我是序列化世界的新手,我有一個可能重複的查詢,但請幫助我。我有一個名爲ABC的類,它由一個列表組成。我想序列化列表以便我可以通過網絡傳輸該列表。以下是我的課程..序列化類中的列表

Public class Abc { 
    public static void main(String[] args) { 

     List list = new ArrayList(); 
     list.add(1); 
     list.add(1); 
     list.add(2); 
     list.add(3); 
     list.add(3); 
     list.add(3); 
} 
} 

我應該爲可序列化或可外部化的接口嗎?

+0

問題在哪裏?你已經實現了'Serializable'接口。 – Aashray 2013-03-27 11:41:40

+0

幾點:1.請更正您的拼寫,特別是一些標點符號會有幫助。 2.請提供更多關於如何轉移該列表的信息。 3. [你嘗試過什麼?](http://www.whathaveyoutried.com) – Thomas 2013-03-27 11:42:38

回答

2

您定義的列表是主方法中的局部變量。局部變量不被序列化。如果需要列表序列化,則需要將其定義爲類ABC的實例變量,並通過實現Serializable「interface」將類ABC定義爲可序列化。

public class Abc implements Serializable { 
    private List<Integer> list = new ArrayList<Integer>(); 
    public Abc() { 
     list.add(1); 
     list.add(1); 
     list.add(2); 
     list.add(3); 
     list.add(3); 
     list.add(3); 
    } 
} 

這樣,Abc類可以被序列化,通過網絡發送,然後正確地反序列化。請注意,List/ArrayList是Java集合的一部分,通常是「可序列化的」。對於自定義類,它們還需要實現Serializable「接口」。

0

如果您的客戶端是Java客戶端,您只需將您的班級標記爲implements Serializable即可。否則,你必須使用XML或JSON編組你的數據。有許多用於編組/解組的庫。對於XML,您可以使用JAXB或XStream;對於JSON,您可以使用Jackson,XStream和更多庫。