如何将java.lang.Object转换为另一种类型的对象?

时间:2012-06-21 22:37:00

标签: java object objectoutputstream typeconverter

我可以使用.dat使我的程序使用Node数组(包含注册表信息的对象:名称,电话号码等)编写ObjectOutputStream文件,但是我在阅读同一个文件时遇到问题,因为该文件包含的对象与我之前使用的Node[]不同。

如果我可以制作其中一个,我的问题就会解决:

  • 将阅读Object转换为对象类型Node[]
  • 读取readNode[]();
  • 之类的文件

我不知道这个的正式名称,所以我找不到答案。

1 个答案:

答案 0 :(得分:3)

从ObjectInputStream返回的Object将与您在第一时间将其写入文件时的类型相同。

但是,你必须在运行时强制转换它,因为编译器无法知道它将是什么类型。

 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);
 }