Java 从文件中读取对象的ArrayList时出错?

Java 从文件中读取对象的ArrayList时出错?,java,Java,我有一个存储在rootFile中的对象数组。我想将对象读回另一个ArrayList。到目前为止,我试过: List<NoteCard> cardArray = new ArrayList<>(); try { FileInputStream fis = openFileInput(rootFile); ObjectInputStream ois = new ObjectInputStream(fis); cardArray = (List<

我有一个存储在rootFile中的对象数组。我想将对象读回另一个ArrayList。到目前为止,我试过:

List<NoteCard> cardArray = new ArrayList<>();

try {
    FileInputStream fis = openFileInput(rootFile);
    ObjectInputStream ois = new ObjectInputStream(fis);
    cardArray = (List<NoteCard>)ois.readObject();
    ois.close();
    fis.close();
} catch(FileNotFoundException e) {
    e.printStackTrace();
} catch(IOException e) {
    e.printStackTrace();
} catch(ClassNotFoundException e) {
    e.printStackTrace();
}

通过执行以下操作,可以删除未选中的强制转换:

ArrayList<NoteCard> cardArray = new ArrayList<>();

try {
    FileInputStream fis = openFileInput(rootFile);
    ObjectInputStream ois = new ObjectInputStream(fis);
    Object object = ois.readObject();
    if (object instanceof ArrayList) {
        ArrayList arrayList = (ArrayList) object;
        for (Object object : arrayList) {
            cardArray.add((NoteCard) object);
        }
    }
    ois.close();
    fis.close();
} catch(FileNotFoundException e) {
    e.printStackTrace();
} catch(IOException e) {
    e.printStackTrace();
} catch(ClassNotFoundException e) {
    e.printStackTrace();
}

你有任何错误吗?是的,它说-Unchecked cast Unchecked cast是一个警告,而不是异常、错误或编译时错误。那么,你真正的问题是什么?你是对的。它正在运行,但我无法从列表中读取任何内容,我认为是未经检查的强制转换造成的。我无法从列表中读取任何内容,因此您的问题甚至与从文件读取无关,问题是您不知道如何处理列表界面?在这种情况下,下面的答案可以纠正您的问题,但请记住,它在序列化方面是完全错误的。建议的更改无法解决序列化问题。啊,好的。我是否也要更改:cardArray=Listois.readObject;到cardArray=ArrayListtois.readObject?对你必须改变这一点。我想指出的是,你关于列表的信息是不可序列化的,你是错的。接口或父接口本身不可序列化是正确的,但这并不重要,因为引用的对象是可序列化的,这是唯一重要的。显然,对于集合,记事卡也必须是可序列化的