1. // 浅拷贝
    2. public class Prototype implements Cloneable {
    3. private String id;
    4. public Prototype(String id) {
    5. this.id = id;
    6. }
    7. public String getId() {
    8. return id;
    9. }
    10. public void setId(String id) {
    11. this.id = id;
    12. }
    13. @Override
    14. public String toString() {
    15. return "id=" + this.id ;
    16. }
    17. public Object clone() {
    18. Object object=null;
    19. try {
    20. object=super.clone();
    21. } catch (CloneNotSupportedException e) {
    22. e.printStackTrace();
    23. }
    24. return object;
    25. }
    26. }
    27. // 深拷贝
    28. @Getter
    29. @Setter
    30. public class AddressSerializable implements Serializable {
    31. private String address1;
    32. private String address2;
    33. public AddressSerializable() {
    34. }
    35. public AddressSerializable(String address1, String address2) {
    36. this.address1 = address1;
    37. this.address2 = address2;
    38. }
    39. }
    40. @Getter
    41. @Setter
    42. public class UserSerializable implements Serializable {
    43. private String userName;
    44. private AddressSerializable address;
    45. public UserSerializable() {
    46. }
    47. public UserSerializable(String userName, AddressSerializable address) {
    48. this.userName = userName;
    49. this.address = address;
    50. }
    51. public static void main(String[] args) {
    52. AddressSerializable address = new AddressSerializable("小区1", "小区2");
    53. UserSerializable user = new UserSerializable("小李", address);
    54. UserSerializable copyUser = SerializationUtils.clone(user);
    55. user.getAddress().setAddress1("小区3");
    56. System.out.println(user == copyUser);
    57. System.out.println(user.getAddress().getAddress1().equals(copyUser.getAddress().getAddress1()));
    58. }
    59. }