2012-04-05 2 views
0

J'essaie d'envoyer un objet via socket.Comment envoyer une liste via des sockets java

objet net

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

ici est la classe ArcObject

public class ArcObject implements Observer { 

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

et voici la classe 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... 
} 

puis je me connecte au serveur

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

puis je tente d'envoyer l'objet via la prise

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

mais le client me donne une exception

java.io.NotSerializableException: petri.ArcObject 

mais classe ArcObject dévers implémente Serializable, car il met déjà en œuvre Observateur, comment suis-je supposé envoyer un objet via socket qui a deux listes incluses. des idées?

Répondre

3

Vous êtes autorisé à implémenter plusieurs interfaces. Il suffit de les séparer par des virgules dans la déclaration.

2

ArcObject et tous ses membres (et leurs membres et ainsi de suite) doivent implémenter l'interface Serializable (c'est juste une interface de marqueur, pas de méthodes à implémenter).

Oh, et, vous pouvez implémenter plusieurs interfaces. Ce que vous ne pouvez pas faire est d'étendre plusieurs classes.

2

classe ArcObject cant implémente Serializable, car il met déjà en œuvre Observateur

Oui, il peut. Une classe peut implémenter plusieurs interfaces.

2

Vous pouvez réellement implémenter plus d'une interface en Java. Par conséquent, il est possible d'implémenter Observer AND Serializable.

Questions connexes