今天算是遇到一个问题了。相当苦恼。
需求如下:有2个相同id的对象,但它们的值不同。其中一个对象要用到另一个对象的属性值。
由于在hibernate的sessionFactory().getSession中不能存在2个相同id的对象。故此,想出复制对象。
找了很多地方,发现有2种方法可以达到复制对象的目的,只是最后这种方法还是没有解决我的问题。仅此记下来吧。
1,克隆clone
java支持克隆一个对象的值到另一个对象,简单的克隆和深度克隆,深度克隆可能包括继承,嵌套,没有用到,所以也就没怎么去研究它。
首先,克隆的对象需要实现 Cloneable接口,重写其中的clone()方法,为了使clone()方法在外部可用,需要将重写的方法访问修饰符改成public级别。
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
dv=(Deliverymanreport)deliverymanreport.clone();//克隆对象
dv是deliverymanreport克隆的一个对象。它拥用克隆后的属性和方法。
2,序列化和反序列化Serializable
序列化的对象要实现Serializable接口才能实现序列化。
序列化后,通过反序列化可以得到和当前对象一样的对象。它比克隆来得更准备。但也就不一定最好,如果这个对象在之前被修改,序列化后可能就会出问题了。
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out= new ObjectOutputStream(byteOut);
out.writeObject(deliverymanreport);//写对象,序列化
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
dv=(Deliverymanreport)in.readObject(); //读对象,反序列化
序列化经常用于文件传递的读取。尤其是在缓存中用得比较多,通过序列化可以将对象缓存在硬盘中。这在登录系统缓存用户权限和角色等信息最常见。而用对克隆对象,也不失为一种很好的方法。
分享到:
相关推荐
model VO 值复制 注解 注解实现相同对象,不同对象,集合与集合复制,不再需要手动。 可以对多个对象进行复制,可以指定复制的类型
NULL 博文链接:https://ollevere.iteye.com/blog/1323205
深度复制Java对象实例,复制后对象属性值改变不影响被复制对象,有注释
java中利用反射复制一个持久化对象
对象的克隆操作过程,展示了对象中数据字段是如何是实现克隆的
Java对象的复制与克隆,包含浅复制和深层复制。 免费下载啦,绝对值得一看。
model VO 值复制 注解 注解实现相同对象,不同对象,集合与集合复制,不再需要手动。 可以对多个对象进行复制,可以指定复制的类型
一个详细讲解JAVA_对象克隆的例子 希望可以帮助到你。
Java CopyUtil工具类,可以进行对象的深copy,比如:对象里面包含对象,对象里面包含Map,List,Set...等复杂类型的属性都可以copy,copy后的对象与原有对象没有联系,即改变原有对象内容,不会改变copy后的对象里面的...
java对象复制.pdf
java基础规范以及java对象的复制使用
编程语言java对象复制.pdf
实现了两个对象之间属性值的拷贝,只要具有相同的属性名就可以拷贝,还有两个file对象的拷贝,实现文件的复制功能
Java中对象的深复制和浅复制详解.doc
使用反射将所有数据从一个对象复制到另一个对象的 Java 实用程序。 “复制”操作,si 基于现有的 getter 和 setter 完成。 源类和目标类必须具有相同的 getter 和相同的 setter 才能工作。 在我的项目中,我总是...
传统上,通过在对象之间复制数据的手动编码值对象汇编器(或转换器)解决了数据对象之间的映射问题。 大多数程序员将开发某种自定义映射框架,并花费无数小时和成千上万行代码映射到其不同的数据对象或从其映射到...
java对象复制[参考].pdf
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
android 浅复制和深复制-Java Generic Deep Copy 篇