java提高篇—–使用序列化实现对象的拷贝

      我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,,使得性能的提升非常明显。然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题。关于深拷贝、浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝

一、浅拷贝问题

我们先看如下代码:

public class Person implements Cloneable{ String name; Email email;public String getName() {return name;}public void setName(String name) {this.name = name;}public Email getEmail() {return email;}public void setEmail(Email email) {this.email = email;}public Person(String name,Email email){this.name = name;this.email = email;}public Person(String name){this.name = name;}protected Person clone() {Person person = null;try {person = (Person) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return person;}}public class Client { main(String[] args) {//写封邮件Email email = new Email("请参加会议","请与今天12:30到二会议室参加会议…");Person person1 = new Person("张三",email);Person person2 = person1.clone();person2.setName("李四");Person person3 = person1.clone();person3.setName("王五");System.out.println(person1.getName() + "的邮件内容是:" + person1.getEmail().getContent());System.out.println(person2.getName() + "的邮件内容是:" + person2.getEmail().getContent());System.out.println(person3.getName() + "的邮件内容是:" + person3.getEmail().getContent());}}——————–Output:张三的邮件内容是:请与今天12:30到二会议室参加会议…李四的邮件内容是:请与今天12:30到二会议室参加会议…王五的邮件内容是:请与今天12:30到二会议室参加会议…如果心在远方,只需勇敢前行,梦想自会引路,

java提高篇—–使用序列化实现对象的拷贝

相关文章:

你感兴趣的文章:

标签云: