【问题标题】:How to turn a java.lang.Object into another type of object?如何将 java.lang.Object 变成另一种类型的对象?
【发布时间】:2012-06-24 06:12:57
【问题描述】:

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

如果我能解决其中一个问题,我的问题就会得到解决:

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

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

【问题讨论】:

  • 如果Object-typed 表达式really 代表Node[],那么cast 将起作用:(Node[])theObjectRead
  • “文件包含的对象与我之前使用的Node[] 不同”是什么意思?
  • 我使用 objectoutputstream 写入文件,但是当我使用 readobject() 时,它返回一个 java.lang.object 类型的对象,文件是使用 writeobject(tree);(tree是一个节点数组)
  • 我会搜索更多关于这种类型转换的信息,如果我找到答案我会在这里报告。

标签: java object objectoutputstream typeconverter


【解决方案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);
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多