我有一个带有 JList 的 Swing 应用程序,它与自定义列表模型一起使用。
该模型有一个 ArrayList 来存储使用的对象。情况如下:
关闭应用程序后,listmodel 中的所有对象都被序列化(默认情况下,该类只实现Serializable
),并通过ObjectOutputStream
. 当应用程序启动时,从文件中读取所有对象并ListModel
再次存储在我的自定义中。
我正在尝试添加一项功能,让用户也可以从他指定的文件中导入对象。另一个类中的静态方法从文件中读取所有对象,并以ArrayList
. 然后,我在我的MainForm
类中使用 for-each 循环将每个对象从返回ArrayList
的ListModel
. 在循环中,我想检查是否ListModel
已经包含某个对象,但这不起作用。
在代码中,我正在执行以下操作:
for(MyObject o: readObjects) {
if(!myListModel.contains(o)) //listmodel just calls contains() on its ArrayList
myListModel.addElement(o);
}
但是,即使对象已经在 ArrayList 中(我一直从同一个文件中导入对象),它们仍然会被添加。
问题是,反序列化时为什么对象不再相等,有没有办法比较它们?