我正在努力实现以下目标
Model model1 = this;
this.remove(index);
Model model2 = this;
然后我想比较model1
和model2
,看看有什么变化。但是,只要我调用删除,model1
也会更改。有没有办法让model1
得到修复?我已经尝试了最终,它产生了相同的结果。我也尝试使用数组,这也没有用。
this
是DefaultListModel
DefaultListModel的文档
https://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html
答案 0 :(得分:1)
当你这样做时
https://mymusic.az/signin?code=SOMECODE&scope=clouddrive%3Aread_all+clouddrive%3Awrite
您实际上是将对象引用Model model1 = this;
指向变量this
。当你这样做
model1
您也在这样做,为变量Model model2 = this;
分配相同的this
引用。在您的代码中,您最终会将model2
,this
和model1
都指向同一个对象。通过哪个引用改变单个对象的状态无关紧要,它仍然是同一个对象,你将通过任何这些变量看到相同的状态。您实际需要的是复制所有相关状态变量的对象副本,通常称为副本或深层副本,具体取决于您的具体要求。是否足以创建model2
的新实例并将当前实例中的所有元素添加到新模型就足够了,或者您实际上也需要创建这些对象的副本,完全取决于您的用例。