在探讨List的深浅拷贝时发现一个问题。在进行基本数据类型和String类型拷贝的时候不存在浅拷贝,只有在存放对象为POJO类的时候会出现浅拷贝的问题:
package com.sc.enumtest;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
// Car c1 = CarFactory.Bmw.makeCar();
// Car c2 = CarFactory.Jeep.makeCar();
// Car c3 = CarFactory.Greatwall.makeCar();
// System.out.println(c1 ==c2);
System.out.println("=======================基本类型/Sting类型============================");
List<Integer> list1 = new ArrayList<Integer>();
list1.add(20002909);
list1.add(20030209);
ArrayList<Integer> destList=new ArrayList<Integer>();
destList.addAll(list1);
System.out.println(list1);
System.out.println(destList);
list1.set(0, 111111);
System.out.println("----该表原集合后----");
System.out.println(list1);
System.out.println(destList);
System.out.println("=======================内容为Pojo-============================");
List<Person> list3 = new ArrayList<Person>();
List<Person> list4 = new ArrayList<Person>();
Person p1 = new Person("sc","20");
Person p2 = new Person("ac","10");
list3.add(p1);
list3.add(p2);
list4.addAll(list3);
System.out.println(list3);
System.out.println(list4);
System.out.println("----该表原集合后----");
list3.get(0).setAge("1oo");
System.out.println(list3);
System.out.println(list4);
}
}
运行结果:
=======================基本类型/Sting类型============================
[20002909, 20030209]
[20002909, 20030209]
----该表原集合后----
[111111, 20030209]
[20002909, 20030209]
=======================内容为Pojo-============================
[Person [name=sc, age=20], Person [name=ac, age=10]]
[Person [name=sc, age=20], Person [name=ac, age=10]]
----该表原集合后----
[Person [name=sc, age=1oo], Person [name=ac, age=10]]
[Person [name=sc, age=1oo], Person [name=ac, age=10]]