0

ソケット経由でオブジェクトを送信しようとしています。

そのオブジェクト ネット

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 クラスは既に Observer を実装しているため、Serializable を実装できません。2 つのリストが含まれるソケット経由でオブジェクトを送信するにはどうすればよいでしょうか。何か案は ?

4

4 に答える 4

3

複数のインターフェイスを実装できます。宣言でそれらをコンマで区切るだけです。

于 2012-04-05T18:30:35.463 に答える
2

実際には、Javaで複数のインターフェースを実装できます。したがって、ObserverANDSerializableを実装することが可能です。

于 2012-04-05T18:31:06.147 に答える
2

ArcObjectそのすべてのメンバー (およびそのメンバーなど) は、Serializableインターフェイスを実装する必要があります (これは単なるマーカー インターフェイスであり、実装するメソッドはありません)。

ああ、複数のインターフェイスを実装できます。できないことは、複数のクラスを拡張することです。

于 2012-04-05T18:29:47.733 に答える
2

ArcObject クラスは Observer を既に実装しているため、Serializable を実装できません

はい、できます。クラスは複数のインターフェースを実装できます。

于 2012-04-05T18:30:27.837 に答える