假设我们有以下类:

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

09-10 14:52
查看更多