【问题标题】:Deserializing objects and adding it to an array反序列化对象并将其添加到数组中
【发布时间】:2012-06-17 18:32:21
【问题描述】:

现在我正在用 Java 1.6 创建一个地址簿。现在我如何设置它是当您添加一个联系人时,它会保存到一个数组中。我写数组没有问题,但是在读取它时,我不知道如何获取我以前保存的每个对象,然后再次将其加载到数组中。

你知道吗:addbook 是我的文件,它是一个 txt 文件。数组是我用来存储对象的数组。我使用的排序是按名称对联系人进行排序的插入排序。如果我没有涵盖其他变量名称之类的东西,我可以澄清一下。

最后,为了澄清,我的问题是问我如何读取我保存到文件中的数组。 这是我的阅读代码:

try {
    FileInputStream in = new FileInputStream(addBook);
    ObjectInputStream readIn = new ObjectInputStream(in);

    array = readIn.readObject();
    readIn.close();


    Sorts.insertionSort(array);

    model.removeAllElements();

    for (int i = array.length - 1; i > 0; i--) {
        model.addElement(((Book) array[i]).getContact());
    }
    comboBox.setModel(model);

} catch (Exception e) {
     e.printStackTrace();
}

【问题讨论】:

  • 这是作业吗?什么不工作?永远不要像那样吞下Exception,至少将e.printStackTrace() 放在catch 块中。
  • @Jeffery 这是我的编程课的总结。行不通的是这一行:“test = readIn.readObject();”我得到的错误是“这条线有多个标记”
  • array的类型是什么? ObjectObject[]Book[]?
  • @Jeffrey 是一个可比较的数组。这是我正在使用的声明:“Comparable[] array = new Comparable[arraySize];” arraySize 是一个整数,在我添加联系人时会向上计数。

标签: java arrays for-loop deserialization


【解决方案1】:

ObjectInputStream.readObject 返回一个Object。如果没有cast,则不能将Object 分配给Comparable[]array = (Comparable[]) readIn.readObject()

【讨论】:

  • 非常感谢杰弗里,我真的很感激。 :) 在剩下的 4 分钟结束后,我将接受答案。
  • @Spartan 不客气。我还添加了一个指向处理强制转换的 Java 教程的链接,如果您想查看它。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多