`
elite20130514
  • 浏览: 45035 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读编写高质量代码整理(二续)

阅读更多

请先看完(二),这里直接该处解决办法,写一个CloneUtils(克隆工具)

package clone;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class CloneUtils {
	@SuppressWarnings("unchecked")//告诉java编译器不要类型检查
	public static<T extends Serializable> T clone(T obj) {
		
		//拷贝产生的对象
		T cobj = null;
		try {
			//读取对象字节数据
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(baos);
			oos.writeObject(obj);//写入内存
			oos.close();
			
			ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());//从内存读取byte数组
			ObjectInputStream ois = new ObjectInputStream(bais);		
			cobj =(T) ois.readObject();//从内存读取数据,类似拷贝
			ois.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
		return cobj;
	}
}

 pojo类:

 

package clone;

import java.io.Serializable;

public class Employee implements Serializable{
	
	/**
	 * serialVersionUID 判断反序列化是否为同一对象,如此程序可正常升级,
	 * 如果不显示声明serialVersionUID,则会造成反序列化的对象和原来对象不匹配
	 */
	private static final long serialVersionUID = -4791800223225662659L;
	
	private String name ;
	
	private Employee boss;
	
	public Employee(String _name) {
		name = _name;
	}

	public Employee(String _name,Employee _boss) {
		name = _name;
		boss = _boss;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Employee getBoss() {
		return boss;
	}

	public void setBoss(Employee boss) {
		this.boss = boss;
	}

}

 如果你嫌麻烦,可以使用Apache下的commons工具包的SerializationUtils类

分享到:
评论

相关推荐

    如何编写高质量JS代码(续)

    继续上一篇文章《如何编写高质量JS代码》今次整理一下javascript函数知识点。 2.使用函数 函数给程序员提供了主要的抽象功能,又提供实现机制。函数可以独立实现其他语言中的多个不同的特性,例如,过程、方法、构造...

    如何编写高质量JS代码

    难得挤出一点点时间,绝不睡懒觉,整理总结往日所看的书,只为了可以离写自己的类库近一点。 本文参考自《javascript语言精粹》和《Effective JavaScript》。例子都被调试过,理解过后,我想把一些“深奥”的道理说...

    MATLAB的数据采集与分析系统源代码

    图像处理日益成为一门引人注目、前景远大的学科,而MATLAB语言以强大的科学运算、灵活程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言便捷的接口功能,成为当今国际上科学界最具影响力、最有活力的...

    C语言难点分析整理

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    免费下载:C语言难点分析整理.doc

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    C语言难点分析整理.doc

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全...

    matlab简单计算程序代码-robin:稳健的文档图像二值化

    robin是用Python编写的RO胸像文档图像BIN整理工具。 robin-快速的文档图像二值化工具; 指标-用于衡量二值化质量的脚本; 数据集-DIBCO 2009-2018,《棕榈叶手稿》和我自己的具有原始图像和真实图像的数据集的链接;...

    c语言难点分析整理,C语言

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    软件设计与体系结构期末复习笔记(xinhua)

    高质量代码的四个基本特性:(记忆) ① 正确性 ② 简单性 ③ 可读性 ④ 可测试性 软件设计模式(Software Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结...

    2023年 java最新学习资料

    1.java_插件 2.Java学习笔记(必看经典).doc 3.Java注释规范整理.docx 4.java泛型.docx 5.java笔记.txt 6.java调试.doc 7.JDK系统变量的配置.txt ...9.编写高质量Java代码.pdf 10.设计模式pptx 11.输入输出重定向.txt

    Investigate_the_Movie_Database_-TMDb-:用Python编写的代码用于调查10,000部电影

    研究电影数据库(TMDb):目录: ...数据整理: 分析的第二步是数据整理,它包括通过视觉和程序评估TMDb Movies数据集,识别是否存在整洁问题,然后提高其质量,这将有助于我们稍后分析数据并得出结论。数据清理(提

    java版飞机大战源码-Resources:收集资源

    如何编写高质量的代码 JS Eslint CSS 浏览器调试技巧 编辑器 Java DB SQL Server MyBatis 日志 RESTful 设计模式 前端 项目 浏览器 IE IE添加受信站点会导致网页对话框中不显示浏览器地址。 IE插件开发 跨域 缓存 ...

    Flash ActionScript 3.0高级动画教程

    编写网格代码 测试并调整网格 整理成类 使用此类 检测不只是为了碰撞 总结 第二章 转向 行为 行为 2D向量(Vector2D)类 机车(Vehicle)类 转向机车(SteeredVehicle)类 寻找行为 避开行为 到达行为 追捕行为 躲避行为 ...

    高级C语言详解

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    react-redux-saga-boilerplate:准备好进行Web和移动应用程序开发的monorepo前端样板。 通过react,redux和redux-saga实现。 用TypeScript编写

    有时由于经济上的时间压力,很难交付高质量的软件。 通过这个项目,我试图提供最佳实践的前端样板。 希望能节省开发人员和其他利益相关者的神经。 知识库 为了完全理解该项目,您应该熟悉以下技术。 (monorepo管理...

    asp.net知识库

    ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET 2.0 中Web 应用程序主题的切换 ASP.NET 2.0 中Web 应用程序主题的切换 2.0正式版中...

    深入理解JavaScript系列.chm

    1.编写高质量JavaScript代码的基本要点 2.揭秘命名函数表达式 3.全面解析Module模式 4.立即调用的函数表达式 5.强大的原型和原型链 6.S.O.L.I.D五大原则之单一职责SRP 7.S.O.L.I.D五大原则之开闭原则OCP 8.S.O.L.I.D...

    高级C语言 C 语言编程要点

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    Transformer架构下的量价选股策略:ChatGPT核心算法应用于量化投资.pdf

    ChatGPT作为基于GPT模型的大型对话式语言模型,不止在文本生成和代码编写领域有着高质量的应用,同时也在其他领域有所涉猎。本篇报告就将聚焦于其核心算法Transformer,在量化投资策略中的运用。

    高级进阶c语言教程..doc

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

Global site tag (gtag.js) - Google Analytics