java对象拷贝

对象拷贝

作用:

  •     提升对象创建的效率。

分类:

  •    浅拷贝:拷贝对象时,String、基本类信息变量属性复制,引用对象不复制。
  •    深拷贝:拷贝对象时,所偶有属性都赋值一份。

 实现方式:

  •    通过clone方法实现。浅拷贝只要拷贝对象实现Cloneable接口并重写clone方法即可;深拷贝需要所有属性对象都实现Cloneable接口并重写clone方法,同时拷贝对象在重写clone方法时要通过拷贝的方式对引用属性赋值。
// 所有属性对象均要实现clone接口,并重写clone方法
public Object clone() throws CloneNotSupportedException { 
 Study s = (Study) super.clone(); 
 s.setScore(this.score.clone()); //  引用对象需要用克隆的方式赋值
 return s; 
}
  •   序列化克隆,属于深拷贝。
Student stu1 = new Student("宁采臣",a,174);
//通过序列化方法实现深拷贝
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stu1);
oos.flush();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
Student stu2 = (Student)ois.readObject();

  • BeanUtils.copyProperties(a,c);这是采用反射实现的,属于浅拷贝。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季风泯灭的季节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值