拷贝对象和原始对象的引用类型引用不同对象。

    1. public class DeepCloneExample implements Cloneable {
    2. private int[] arr;
    3. public DeepCloneExample() {
    4. arr = new int[10];
    5. for (int i = 0; i < arr.length; i++) {
    6. arr[i] = i;
    7. }
    8. }
    9. public void set(int index, int value) {
    10. arr[index] = value;
    11. }
    12. public int get(int index) {
    13. return arr[index];
    14. }
    15. @Override
    16. protected DeepCloneExample clone() throws CloneNotSupportedException {
    17. DeepCloneExample result = (DeepCloneExample) super.clone();
    18. result.arr = new int[arr.length];
    19. for (int i = 0; i < arr.length; i++) {
    20. result.arr[i] = arr[i];
    21. }
    22. return result;
    23. }
    24. }
    25. DeepCloneExample e1 = new DeepCloneExample();
    26. DeepCloneExample e2 = null;
    27. try {
    28. e2 = e1.clone();
    29. } catch (CloneNotSupportedException e) {
    30. e.printStackTrace();
    31. }
    32. e1.set(2, 222);
    33. System.out.println(e2.get(2)); // 2