Как превратить объект 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);
}