【问题标题】:multiple candidate objects through ObjectInputStream in javajava中通过ObjectInputStream的多个候选对象
【发布时间】: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() 之后,如果反序列化成功,则“请求”已经是正确的类。您还想处理哪些进一步的步骤?(“类似的事情”)

标签: java objectinputstream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多