private List<CourseGroupBean> courseGroups = new ArrayList<CourseGroupBean>();
...
courseGroups = getAlgorithmUtil().listCourses();
...
List<CourseGroupBean> courseGroupsTwo = courseGroups;
我知道,如果我做第三行,它将把courseGroups的引用赋给courseGroupsTwo,但是我只想分配它的值。如何用Java做到这一点?
编辑
我的意思是,当我在courseGroupsTwo上删除/添加一个对象时,它在CourseGroups上没有任何改变。
最佳答案
Java本机不支持对象的按值复制,因此您必须自己做:
List<CourseGroupBean> courseGroupsTwo = new ArrayList<CourseGroupBean>(courseGroups);
将执行
courseGroups
的浅表副本,即将创建一个包含与courseGroups
相同对象的新列表。如果需要,可以将ArrayList
替换为更合适的List
实现。如果愿意,也可以使用
clone
。 clone
有点讨厌,因为您需要在克隆之后进行强制转换。强制转换通常很糟糕,因为它可能会引入运行时错误,而上面的代码在出现问题时会生成编译时错误。