通常,反序列化是通过以下方式完成的:

PersistentTime time = null;
time = (PersistentTime)ois.readObject();


其中ois是ObjectInputStream对象,而PersistentTime是我们要反序列化的类。

因此,如果我的应用程序有2或3种通过网络发送的对象,是否有可能在不知道对象类型的情况下反序列化对象,或者先不知道对象的类型,然后再根据该类型反序列化呢?

最佳答案

当然;您已经这样做了!但是,如果要保存类型转换以供以后使用:

Object deserialized = ois.readObject();

if (deserialized instanceof PersistentTime) {
  PersistentTime time = (PersistentTime)deserialized;
  // do something with time...
} else if (deserialized instanceof SomethingElse) {
  ...
} else if (...) {
  ...
}

08-07 00:04