【发布时间】:2013-10-12 13:25:56
【问题描述】:
我正在使用带有 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 (...) 之类的东西
如你所见,这样做的可重用性不是很高,在多个地方写这样的东西。
【问题讨论】:
-
您的问题在这里令人困惑。在 in.readObject() 之后,如果反序列化成功,则“请求”已经是正确的类。您还想处理哪些进一步的步骤?(“类似的事情”)