Java 从文件中读取对象的ArrayList时出错?
我有一个存储在rootFile中的对象数组。我想将对象读回另一个ArrayList。到目前为止,我试过:Java 从文件中读取对象的ArrayList时出错?,java,Java,我有一个存储在rootFile中的对象数组。我想将对象读回另一个ArrayList。到目前为止,我试过: List<NoteCard> cardArray = new ArrayList<>(); try { FileInputStream fis = openFileInput(rootFile); ObjectInputStream ois = new ObjectInputStream(fis); cardArray = (List<
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?对你必须改变这一点。我想指出的是,你关于列表的信息是不可序列化的,你是错的。接口或父接口本身不可序列化是正确的,但这并不重要,因为引用的对象是可序列化的,这是唯一重要的。显然,对于集合,记事卡也必须是可序列化的