在不知道Java类型的情况下反序列化对象

sga*_*arg 1 java serialization

通常,反序列化按以下方式完成:

PersistentTime time = null;
time = (PersistentTime)ois.readObject();
Run Code Online (Sandbox Code Playgroud)

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

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

Tho*_*mas 8

当然; 你已经这样做了!但是如果你想在以后保存类型转换:

Object deserialized = ois.readObject();

if (deserialized instanceof PersistentTime) {
  PersistentTime time = (PersistentTime)deserialized;
  // do something with time...
} else if (deserialized instanceof SomethingElse) {
  ...
} else if (...) {
  ...
}
Run Code Online (Sandbox Code Playgroud)