我有两个枚举(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)