Как превратить объект java.lang.Object в объект другого типа?

Я могу заставить свою программу написать .dat файл с массивом Node (объект, который содержит информацию реестра: имя, номера телефонов,...) с помощью ObjectOutputStream, но у меня проблемы с чтением этого же файла, так как файл содержит объект, который отличается от Node[] Я использовал раньше.

Мои проблемы будут решены, если я смогу сделать одну из них:

  • Преобразование чтения Object в тип объекта Node[], или же
  • Прочитать файл как что-то вроде readNode[]();

Я не знаю официального названия для этого, поэтому у меня проблемы с поиском ответа.

1 ответ

Решение

Объект, возвращаемый из ObjectInputStream, будет иметь тот же тип, который был у него, когда вы сначала записали его в файл.

Однако вам придется приводить его во время выполнения, потому что компилятор не может знать, какой это будет тип.

 Object obj = stream.readObject();
 Node[] nodes = (Node[]) obj;

Если ваш формат гибкий, и вы не знаете, чего именно ожидать, вы можете использовать instanceof, чтобы сначала проверить различные возможности.

 if (obj instanceof Node[]){
     // do something
 }
 else if (obj instanceof String) { 
     // do something
 }
 else {
    throw new IOException("unexpected object in data stream "+ obj);
 }
Другие вопросы по тегам