当前位置: 首页 > news >正文

比亚迪新能源汽车4s店福州seo推广优化

比亚迪新能源汽车4s店,福州seo推广优化,基于搜索引擎的网站推广方式,中企动力这家公司怎么样在我以前的文章中#xff0c;我解释了深度克隆和浅层克隆之间的区别 #xff0c; 以及复制构造函数和防御性复制方法比默认的Java克隆更好。 使用复制构造函数和防御性复制方法进行的Java对象克隆当然具有某些优势#xff0c;但是我们必须显式编写一些代码才能在所有这些方… 在我以前的文章中我解释了深度克隆和浅层克隆之间的区别 以及复制构造函数和防御性复制方法比默认的Java克隆更好。 使用复制构造函数和防御性复制方法进行的Java对象克隆当然具有某些优势但是我们必须显式编写一些代码才能在所有这些方法中实现深度克隆。 而且仍然有可能我们会错过某些东西并且不会得到深克隆的对象。 正如在Java中创建对象的5种不同方式所讨论的那样对序列化对象进行反序列化将创建一个状态与序列化对象相同的新对象。 因此与上述克隆方法类似我们也可以使用对象序列化和反序列化来实现深度克隆功能并且通过这种方法我们不必担心或编写用于深度克隆的代码默认情况下会得到它。 但是使用序列化克隆对象会带来一些性能开销如果我们只需要克隆对象而不需要将其持久保存在文件中以备将来使用则可以通过使用内存中序列化来改进它。 我们将使用以下Employee类作为示例其name 作为状态的doj和skills 对于深度克隆我们无需担心code name字段因为它是String对象默认情况下是all 弦在本质上是不变的 。 您可以在《 如何在Java中创建不可变的类》以及《 为什么String是不可变的和Final》上阅读有关不可变性的更多信息。 Employee class implements Serializable { private static final long serialVersionUID 2L; private String name; private LocalDate doj; private ListString skills; public Employee(String name, LocalDate doj, ListString skills) { this .name name; this .doj doj; this .skills skills; } public String getName() { return name; } name; } public LocalDate getDoj() { return doj; } doj; } public ListString getSkills() { return skills; } skills; } // Method to deep clone a object using in memory serialization public Employee deepClone() throws IOException, ClassNotFoundException { // First serializing the object and its state to memory using ByteArrayOutputStream instead of FileOutputStream. ByteArrayOutputStream bos new ByteArrayOutputStream(); ObjectOutputStream out new ObjectOutputStream(bos); out.writeObject( this ); // And then deserializing it from memory using ByteArrayOutputStream instead of FileInputStream. // Deserialization process will create a new object with the same state as in the serialized object, ByteArrayInputStream bis new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream in new ObjectInputStream(bis); return (Employee) in.readObject(); } Override public String toString() { return String.format( Employee{name%s, doj%s, skills%s} , name, doj, skills); } Override public boolean equals(Object o) { if ( this o) return true ; if (o null || getClass() ! o.getClass()) return false ; Employee employee (Employee) o; return Objects.equals(name, employee.name) Objects.equals(doj, employee.doj) Objects.equals(skills, employee.skills); } Override public int hashCode() { return Objects.hash(name, doj, skills); } } 为了深度克隆Employee类的对象我提供了一个 deepClone()方法通过使用将对象序列化到内存 ByteArrayOutputStream而不是FileOutputStream并使用ByteArrayInputStream而不是FileInputStream将其反序列化。 在这里我们将对象序列化为字节然后再次将其从字节反序列化为对象。 Employee类实现Serializable接口来实现序列化这有其自身的缺点我们可以通过使用Externalizable接口自定义序列化过程来克服其中的一些缺点。 我们可以在下面的测试中运行以了解我们的克隆方法是深层克隆还是浅层克隆此处所有操作将返回false因为两个对象是分开的而所有equals将返回true因为两者具有相同的内容。 public static void main(String[] args) throws IOException, ClassNotFoundException { Employee emp new Employee( Naresh Joshi , LocalDate.now(), Arrays.asList( Java , Scala , Spring )); System.out.println( Employee object: emp); // Deep cloning emp object by using our deepClone method. Employee clonedEmp emp.deepClone(); System.out.println( Cloned employee object: clonedEmp); System.out.println(); // All of this will print false because both objects are separate. System.out.println(emp clonedEmp); System.out.println(emp.getDoj() clonedEmp.getDoj()); System.out.println(emp.getSkills() clonedEmp.getSkills()); System.out.println(); // All of this will print true because clonedEmp is a deep clone of emp and both have the same content. System.out.println(Objects.equals(emp, clonedEmp)); System.out.println(Objects.equals(emp.getDoj(), clonedEmp.getDoj())); System.out.println(Objects.equals(emp.getSkills(), clonedEmp.getSkills())); } 我们知道反序列化过程每次都会创建一个新对象如果我们必须使我们的类单身那将是不好的。 这就是为什么我们需要重写和禁用单例类的序列化这可以通过提供writeReplace和readResolve方法来实现。 与序列化类似Java克隆也不能与单例模式一起使用这就是为什么我们也需要覆盖和禁用它。 我们可以通过实现克隆的方式来做到这一点以便它要么抛出 CloneNotSupportedException或每次都返回相同的实例。 您可以在Java Cloning和Java上阅读有关Java克隆和序列化的更多信息。 Java序列化主题。 您可以在此找到本文的完整源代码。 Github存储库 请随时提供宝贵的反馈。 翻译自: https://www.javacodegeeks.com/2019/08/deep-clone-using-java-memory-serialization.html
http://www.zqtcl.cn/news/975515/

相关文章:

  • 淮安网站建设报价.net网站制作
  • 做母亲节网站的素材最好用的搜索引擎排名
  • 免费创建个人网站网站怎么做下载内容
  • 网站群建设路径桥头网站建设
  • 网站建设创业经历深圳龙华区教师招聘
  • 网站开发的形式全网营销代运营
  • 集团网站设计方案wordpress+仿简书模板
  • 展览馆网站建设方案书wordpress怎么重装
  • 做半成品网站网站开发合同模板
  • 建筑工程师的工作内容山东网站营销优化开发
  • 织梦网站首页错位淄博汽车网站建设
  • 匿名聊天网站开发长沙关键词快速排名
  • 成都网站设计报价手机微信官方网站
  • 网页设计模板网站免费做那个男女的视频网站
  • 庄河网站建设如何上传文件到网站
  • 北京企业网站改版wordpress comer
  • 做租赁的行业网站腾讯云服务器用什么做网站
  • 承德优化网站建设建设旅游网网站软件
  • 金山专业网站建设科技作品手工
  • 企业网站开发丨薇大型门户网站制作教程
  • m开头的网站开发工具青少儿编程
  • 确定网站风格域名查询中国万网
  • 邢台网站优化定制网站内怎么做搜索
  • 深圳公司网站开发济宁医院网站建设
  • vr功能网站建设手机网站引导页js插件
  • 汕头企业建站系统模板沈阳网站建设q479185700棒
  • 外包公司做网站多少百度做推广一般要多少钱
  • asp静态网站用shopify 做网站
  • 政务公开和网站建设dedecms模板安装教程
  • 做网站公司选哪家erp财务软件怎么使用