2012-04-05 47 views
0

我想通過套接字發送一個對象。如何通過套接字發送列表java

它的對象網

public class Net { 
    public List<NetObject> objects; //= new ArrayList<NetObject>(); // place + transition 
    public List<ArcObject> arcs; // = new ArrayList<ArcObject>(); // arcs - objects 
} 

這裏是ArcObject類

public class ArcObject implements Observer { 

    public NetObject o1; 
    public NetObject o2; 
    public String parameter; 
} 

,這裏是NetObject類

public class NetObject implements Observer{ 
public int index; // index of object 
public int type; // type - place=1, transition=2 ... 
public int x; // position 
public int y; 
public List<Integer> tokens ; //list of tokens 
//public List<ArcObject> arcs = new ArrayList<ArcObject>(); 
public String guard; 
// etc... 
} 

然後我連接到服務器

 String computername=InetAddress.getLocalHost().getHostName(); 
     kkSocket = new Socket(computername, 4444); 
     OutputStream outputStream = null ; 
     ObjectOutputStream out = null ; 
     outputStream = kkSocket.getOutputStream(); 
     out = new ObjectOutputStream(outputStream); 

,然後我試着通過插座

out.writeObject(petriNet); //petriNet object is from class Net 

發送對象,但客戶給了我一個例外

java.io.NotSerializableException: petri.ArcObject 

但ArcObject類着實現Serializable,因爲它已經實現了觀測,所以我怎麼應該通過包含兩個列表的套接字發送對象。 有什麼想法?

回答

3

您可以實現多個接口。只是逗號 - 在聲明中將它們分開。

2

ArcObject及其所有成員(及其成員等)需要實現Serializable接口(它只是一個標記接口,沒有實現方法)。

呵呵,你可以實現多個接口。你不能做的是擴展多個類。

2

ArcObject類着實現Serializable,因爲它已經實現了觀察員

是的,可以。一個類可以實現多個接口。

2

實際上,您可以在Java中實現多個接口。因此可以實現Observer和Serializable。