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

桃城网站建设公司广告宣传方式有哪些

桃城网站建设公司,广告宣传方式有哪些,做网站怎么拿框架的原代码,邯郸网站建设的企业浅克隆: 实现Cloneable接口即可实现,浅克隆只对象内部的基础数据类型(包括包装类)被克隆,引用数据类型(负责对象)会被使用引用的方式传递。 简单来说,就是浅克隆属性如果是复杂对象…

浅克隆:

实现Cloneable接口即可实现,浅克隆只对象内部的基础数据类型(包括包装类)被克隆,引用数据类型(负责对象)会被使用引用的方式传递。
简单来说,就是浅克隆属性如果是复杂对象,对象是不会被复制一份的。
示例如下:

package com.comleader.utils.test;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @Author: Daisen.Z* @Date: 2023/3/10 9:53* @Version: 1.0* @Description:*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Friend {private String name;private Integer age;private String home;
}

注意: 需要重新clone方法,将方法的protected改为public

package com.comleader.utils.test;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @Author: Daisen.Z* @Date: 2023/3/10 9:53* @Version: 1.0* @Description:*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person implements Cloneable {private String name;private Integer age;private String home;private Friend friend;@Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();}public static void main(String[] args) throws CloneNotSupportedException {Person person_old = new Person();person_old.setName("张三");person_old.setAge(18);person_old.setHome("chengdu");person_old.setFriend(new Friend("李四",19,"chongqin"));System.out.println("初始化下的person:" + person_old);Person person_clone = (Person) person_old.clone();person_clone.setName("张武");person_clone.setAge(19);person_clone.getFriend().setAge(20);System.out.println("克隆出来的person:" + person_clone);System.out.println("修改之后的person:" + person_clone);System.out.println("修改后的原person:" + person_old);}
}

运行Person中的main方法,
在这里插入图片描述
观察结果可以看出,修改Person的克隆对象的friend复杂属性时,原对象包括原对象的所有克隆对象friend熟悉都会被修改。
而修改String和Integer的则互不影响。

补充知识:

clonable接口的克隆方式,相比较于new对象的方式,不需要再计算内存分布,而是直接将内存区域分配给克隆对象,在大数据量的重复对象创建时可以使用clonable来优化性能。

深克隆:

深克隆的方式只能自己重新Cloneable方法或者序列化的方式实现。

重新克隆方法的方式:

1、 Friend实现Cloneable接口,并重写clone()方法。

@Data
@NoArgsConstructor
@AllArgsConstructor
class Friend implements Cloneable{private String name;private Integer age;private String home;@Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();}
}

2、 更改Person中的clone()方法

@Data
@NoArgsConstructor
@AllArgsConstructor
class Person implements Cloneable{private String name;private Integer age;private String home;private Friend friend;@Overridepublic Object clone() throws CloneNotSupportedException {Person person = (Person) super.clone();person.friend = (Friend) friend.clone();return person;}
}

这样克隆时,内部复杂对象也被克隆。

通过序列化对象的方式

如果当类中的属性存在数组(数组不能实现Cloneable接口)或者属性之间的关系比较复杂时,上面的方法都不能很好的实现深克隆了。

序列化的方式是让每个类都实现Serializable接口,然后通过序列化和反序列化操作达到深克隆的目的。

package test;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.*;@Data
@NoArgsConstructor
@AllArgsConstructor
class Person implements Serializable{private String name;private Integer age;private String home;private Friend friend;}@Data
@NoArgsConstructor
@AllArgsConstructor
class Friend implements Serializable {private String name;private Integer age;private String home;}public class CloneTest {public static void main(String[] args) throws CloneNotSupportedException, IOException, ClassNotFoundException {Person person_old = new Person();person_old.setName("张三");person_old.setAge(18);person_old.setHome("chengdu");person_old.setFriend(new Friend("李四",19,"chongqin"));System.out.println("初始化下的person:" + person_old);ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);objectOutputStream.writeObject(person_old);     //  序列化ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);Person person_clone = (Person) objectInputStream.readObject();	//反序列化person_clone.setName("张武");person_clone.setAge(19);person_clone.getFriend().setAge(20);System.out.println("克隆出来的person:" + person_clone);System.out.println("修改之后的person:" + person_clone);System.out.println("修改后的原person:" + person_old);}
}

总结:

1、 浅克隆性能相比较new会有一些提高(很小),但是编码省了很多。
2、深克隆第一种实现方式同1。
3、深克隆的第二种实现方式在数据量多的情况下性能较差,但是当类熟悉特别多、对象占用空间特别大时会有较好效果,另外通过序列化可以将对象当前的形态以文件、IO流的方式保存下来,在需要时再进行加载转换,

http://www.hrbkazy.com/news/46181.html

相关文章:

  • 做网站快速排名优化网站排名软件
  • 宝鸡网站制作北京最新疫情最新消息
  • 微网站免费模板网络推广的主要内容
  • 湘潭做网站凡科建站官网
  • 如何模仿网站模板网站优化网络推广seo
  • 陕西省西咸新区开发建设管理委员会官方网站dz论坛如何seo
  • 网站验证码原理网站登录入口
  • 上海网站建设公司地址公众号推广
  • 业务网站制作成都移动seo
  • 三个字公司名字大全必过长春seo
  • 广州商城网站建设湖南网络推广排名
  • 做俄语网站建设重庆做seo外包的
  • wordpress成品网站yunbuluo百度关键词推广方案
  • 洛阳做网站公司电话今天最新的新闻头条新闻
  • 在线营销单页网站制作东莞产品网络推广
  • 什么网站可以做论坛app网站推广文章
  • 免费看电视的网站有哪些淘宝关键词排名优化
  • 建设网站英文在线服务器网站
  • .net购物网站开发网时代教育培训机构怎么样
  • 怎么做一元抽奖网站网站怎么做优化排名
  • 网站的设计方法有哪些内容网络营销的有哪些特点
  • 网站建设 python营销推广手段有什么
  • wordpress会员注册怎样更改宁波正规seo推广
  • 网站做中英文英文太长怎么办摘抄一篇新闻
  • 郑州富士康郑州众志seo
  • 建设网站的步骤seo网站seo内容优化
  • 做网站怎么找客户联系方式熊猫关键词工具官网
  • wap网站制作教程台湾搜索引擎
  • 建设部执业资格网站关键词怎么提取
  • 竞猜网站开发多少钱合肥网络seo