2012-04-05 11 views
0

Ich versuche, ein Objekt über Socket zu senden.Wie sende ich Liste über Sockets Java

sein Objekt Net

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

hier ist die ArcObject Klasse

public class ArcObject implements Observer { 

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

und hier NetObject Klasse

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... 
} 

ist dann eine Verbindung i mit dem Server

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

und dann versuche ich über die Buchse

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

Objekt zu senden, aber der Kunde gibt mir eine Ausnahme

java.io.NotSerializableException: petri.ArcObject 

aber ArcObject Klasse kann nicht Serializable implementiert, da es bereits Observer implementiert, so wie ich bin soll Objekt über Socket senden, das zwei Listen enthalten hat. irgendwelche Ideen?

Antwort

3

Sie dürfen mehrere Schnittstellen implementieren. Komm einfach - trennen Sie sie in der Deklaration.

2

ArcObject und alle seine Mitglieder (und ihre Mitglieder und so weiter) müssen die Serializable Schnittstelle implementieren (es ist nur eine Marker-Schnittstelle, keine Methoden zu implementieren).

Oh, und Sie können mehrere Schnittstellen implementieren. Was Sie nicht tun können, ist mehrere Klassen zu erweitern.

2

ArcObject Klasse kann nicht implementiert Serializable, da es bereits implementiert Observer

Ja, es kann. Eine Klasse kann mehrere Schnittstellen implementieren.

2

Sie können tatsächlich mehr als eine Schnittstelle in Java implementieren. Daher ist es möglich, Observer AND Serializable zu implementieren.