多个候选对象通过java中的ObjectInputStream

时间:2013-10-12 13:25:57

标签: java objectinputstream

我正在使用带有tcp套接字的ObjectInputStream来检索和发送可序列化的对象,这些对象是我程序的核心语义。但是为了将它们转换为对象,首先我需要逐个检查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(...)之类的东西

正如你所看到的,以这种方式做这种方式并不是非常可重复,在多个地方写这样的东西。

1 个答案:

答案 0 :(得分:0)

我不确定你是如何反序列化的,但是,你能简单地使用getClass方法并将其传递给某种工厂吗?