JAVA复制对象给另一个对象

 

JAVA复制对象给另一个对象 

标签: javahibernateobject
  14881人阅读  评论(0)  收藏  举报
  分类:
 

今天算是遇到一个问题了。相当苦恼。

需求如下:有2个相同id的对象,但它们的值不同。其中一个对象要用到另一个对象的属性值。

由于在hibernate的sessionFactory().getSession中不能存在2个相同id的对象。故此,想出复制对象。

找了很多地方,发现有2种方法可以达到复制对象的目的,只是最后这种方法还是没有解决我的问题。仅此记下来吧。

1,克隆clone

Java支持克隆一个对象的值到另一个对象,简单的克隆和深度克隆,深度克隆可能包括继承,嵌套,没有用到,所以也就没怎么去研究它。

首先,克隆的对象需要实现 Cloneable接口,重写其中的clone()方法,为了使clone()方法在外部可用,需要将重写的方法访问修饰符改成public级别。

[java]  view plain  copy
 print ?
  1. @Override  
  2.     public Object clone() throws CloneNotSupportedException {  
  3.         return super.clone();  
  4.     }  

[java]  view plain  copy
 print ?
  1. dv=(Deliverymanreport)deliverymanreport.clone();//克隆对象  

dv是deliverymanreport克隆的一个对象。它拥用克隆后的属性和方法。


2,序列化和反序列化Serializable

序列化的对象要实现Serializable接口才能实现序列化。

序列化后,通过反序列化可以得到和当前对象一样的对象。它比克隆来得更准备。但也就不一定最好,如果这个对象在之前被修改,序列化后可能就会出问题了。

[java]  view plain  copy
 print ?
  1. ByteArrayOutputStream byteOut = new ByteArrayOutputStream();  
  2. ObjectOutputStream out= new ObjectOutputStream(byteOut);  
  3. out.writeObject(deliverymanreport);//写对象,序列化  
  4. ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());   
  5.  dv=(Deliverymanreport)in.readObject(); //读对象,反序列化  

序列化经常用于文件传递的读取。尤其是在缓存中用得比较多,通过序列化可以将对象缓存在硬盘中。这在登录系统缓存用户权限和角色等信息最常见。而用对克隆对象,也不失为一种很好的方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值