基本思想:把被赋值的主对象写入到一个字节流中,再从字节流中将其读出来,这样就可创建一个新的对象了。且新对象与主对象不存在引用共享。相互独立。

关于Serialization:java通过实现java.io.Serialization接口来启用序列化功能,使用该工具类的对象必须实现Serializable接口,否则无法实现克隆。序列化接口没有方法和字段,无需继承Colneable接口实现clone方法

public class CloneUtil {public static <T extends Serializable> T clone(T obj) {T cloneObj = null;try {// 写入字节流ByteArrayOutputStream out = new ByteArrayOutputStream();ObjectOutputStream obs = new ObjectOutputStream(out);obs.writeObject(obj);obs.close();// 分配内存,写入原始对象,生成新对象ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray());ObjectInputStream ois = new ObjectInputStream(ios);// 返回生成的新对象cloneObj = (T) ois.readObject();ois.close();} catch (Exception e) {e.printStackTrace();}return cloneObj;}
}

Java中使用序列化实现深拷贝相关推荐

  1. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  2. 【转】JAVA中的浅拷贝和深拷贝

    原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep co ...

  3. java中实现序列化的作用

    Java 中进行序列化操作需要实现 Serializable 或 Externalizable 接口.序列化的目的有两个,第一个是便于存储,第二个是便于传输.一.序列化作用:1. 提供一种简单又可扩展 ...

  4. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  5. java中的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  6. java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化

    java自定义外部接口 在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用w ...

  7. 如何使用可外部化的接口在Java中自定义序列化

    在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用writeObject和r ...

  8. 对象序列化Java中的序列化

    首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 当两个进程在停止远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都市以二进制序列的情势在络网上传送.发送方需要把这个Java对 ...

  9. Java中的序列化问题

    Java序列化是指将Java中的类对象状态以字节的形式保存,需要的时候可以解码获取,通常用于共享数据交互.网络通信等.在Java中,属于对象的状态才应该保存,因此,静态数据成员不能保存:如果不愿意保存 ...

最新文章

  1. Linux工业嵌入式应用
  2. 深入理解JVM(6)——类加载器
  3. Computer:成功解决安装软件时需要系统空间环境辅助程序(比如Microsoft Visual C++2010 x86 Redistributable安装失败)
  4. Java基础之String,StringBuilder,StringBuffer三者的区别
  5. JavaScript入门(part5)--数据类型转换
  6. 2019蓝桥杯省赛---java---B---3(数列求值)
  7. threejs骨架形状
  8. 剑指Offer(四):重建二叉树
  9. 解封装(三):AVFormatContext分析
  10. 服务器系统的安装方法,服务器的操作系统安装方法
  11. 用户设置代理如何获取真实IP
  12. java打印5排星号_Java-用星号打印菱形
  13. php 逻辑思维题,倘若3分钟内,你能答对这道智力题,说明你的逻辑思维能力很强...
  14. HTML5期末大作业:在线电影网站设计——电影我不是药神响应式页播(4页) HTML+CSS+JavaScript HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计
  15. ❤️ 炒 股 实 战丨原 地 起 飞 ❤️
  16. 23行代码下载逆水寒壁纸图片
  17. win10接USB设备(移动硬盘扫码枪之类)蓝屏问题处理
  18. echarts5.0 去掉 hover 折线变粗方法
  19. java 进程迁移_将java进程转移到“解剖台”之前,法医都干了什么?
  20. 推流用本地地址收报错,http://127.0.0.1:1935/live/test:connection refused

热门文章

  1. Servlet 服务器端小程序
  2. Linux之DNS服务
  3. Windows 10预览版14316开启Bash命令支持
  4. android中设置控件获得焦点 (转)
  5. linux yum命令详解
  6. 提高网站页面收录的几个方法 返回列表 发新帖回复
  7. k-d tree算法的研究
  8. Serial Communications in Win32
  9. 通过xmanager远程连接redhat linux as 5
  10. 电子界卡组构建2019_2018–2019年构建现代Android应用程序的路线图