假设我们有以下类:
class Packet implements Serializable { ... };
class OpenConnectionPacket extends Packet { ... };
class DataPacket extends Packet { ... };
class CloseConnectionPacket extends Packet { ... };
现在,我希望能够发送这样的任意数据包:
Socket s = ...;
ObjectOutputStream toServer = new ObjectOutputStream(s.getOutputStream());
Packet p = ...;
toServer.writeObject(p);
并从另一端收到:
Socket s = ...;
ObjectInputStream fromClient = new ObjectInputStream(s.getInputStream());
Packet p = (Packet) fromClient.readObject();
这可能吗?怎么样? (如果是的话,我猜是应该重写
writeObject()
和readObject()
方法,并可能在父类int type;
中使用类似Packet
或一些枚举的形式来标识每个孩子吗?) 最佳答案
您无需覆盖writeObject()
和readObject()
。
除非有必要,否则除非您在序列化时编写自定义逻辑,否则它将以其默认实现运行。
欲了解更多信息,请看下面的链接
ObjectOutputStream
Serialization - readObject writeObject overides