我正在使用带有 tcp 套接字的 ObjectInputStream 来检索和发送可序列化对象,这是我的程序的核心语义。但是为了将它们转换为 objects ,首先我需要使用 instanceof 逐一检查它们是否是当前定义的类。问题是我最终可能需要更多这些课程。我知道没有扫描所有子类的好方法,但我可以利用可序列化接口以某种方式重建对象。
矮个子就是我的意思
MyObj implements Serializable
....
SubClass1OfMyObj extends MyObj
Subclass2OfMyObj extends MyObj
Subclass3OfMyObj extends MyObj
....
MyObj request = (MyObj)in.readObject();
if( request instanceof Subclass1OfMyObj)
if( request instanceof Subclass2OfMyObj)
if( request instanceof Subclass3OfMyObj)
....
编辑:我需要能够在这里实例化正确的子类。像新的 Subclass1OfMyObj (...) 之类的东西
正如你所看到的,这样做不是很可重用,在多个地方写这样的东西。