0

我有两个枚举(Enum1 和 Enum2),它们都实现了一个接口(Face)。

两个枚举也有字段(Image img)。

每个枚举的接口实现方式都不同。

然后我有一个可序列化的类 (Message),它有一个名为 payload 的字段,它是一个 Face。

当我通过其有效负载的值为 Enum1 的套接字发送消息时,一切正常。但是当我对 Enum2 做同样的事情时,我得到了一个不可序列化的异常,用于该 Enum 上的图像字段。

有一堆与所有这些相关的代码,我知道错误可能隐藏在其中,但它是一个明显的异常,所以我的问题是:java 如何处理通过套接字发送接口枚举?实际将发送什么,将接收什么,以及我可以将接收到的有效负载转换为什么?

interface Face {
     void action();
}



enum Enum1 implements Face {
    AA("aa"), BB("bb"), CC("cc");

    Image img;
    Enum1(String _path){
         // init image
    }

    void action(){
        // do stuff
    }
}



enum Enum2 implements Face {
    XX("xx"), YY("yy"), ZZ("zz");

    Image img;
    Enum2(String _path){
         // init image
    }

    void action(){
        // do other different stuff
    }
}



class Message implements Serializable {
    Face face;
    Message(Face _face){
        this.face = _face;
    }
}



socket.send(new Message(Enum1.AA)); 
// Everything ok
socket.send(new Message(Enum2.XX)); 
// Not serializable exception (Image)
4

0 回答 0