浅拷贝:对于基础数据类型,改变拷贝后的数据,不会影响原来数据。引用数据类型,会改变原始数据。
深拷贝:重新开辟一份内存空间,不会影响之前的值。
public static void main(String[] args) {
List<ReportResourceAnalyze> list1 = new ArrayList<>();
ReportResourceAnalyze dto = new ReportResourceAnalyze();
dto.setMonths("1");
list1.add(dto);
List<ReportResourceAnalyze> list2 =
(List<ReportResourceAnalyze>) SerializationUtils.clone((Serializable) list1);
list2.stream().forEach(
s->{
s.setMonths("2");
}
);
System.out.println(JSON.toJSONString(list1));
System.out.println(JSON.toJSONString(list2));
}
生成一个新的list2,改变list2 的值list1的值不会改变。
List list2 = (List) SerializationUtils.clone((Serializable) list1);
指向同一个地址,list1和list2一起变
List list2 = new new ArrayList<>(list1)