`
elite20130514
  • 浏览: 45897 次
  • 性别: 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》。例子都被调试过,理解过后,我想把一些“深奥”的道理说...

    MISRA C++ 2008 规则整理.pdf

    MISRA C++ 2008 规则整理是一份非常重要的编程规范文档,对于 C++ 程序员来说,了解和掌握这些规则对编写高质量的代码非常重要。 MISRA C++ 2008 规则整理中包含了大量的规则和指南,涵盖了函数定义、参数使用、...

    C语言函数定义与调用[整理].pdf

    C语言函数定义于调用是C语言编程的基础概念,理解函数的定义和调用是编写高质量C语言程序的关键。下面我们将详细介绍C语言函数的定义和调用。 一、函数定义 在C语言中,函数是指一个可重复使用的代码块,用于执行...

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

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

    PEP8Python编码规范整理.pdf

    PEP 8 Python 编码规范整理 PEP 8 是 Python 官方编码规范,旨在统一 Python 代码风格和格式,提高代码的可读性...遵循 PEP 8 规范可以帮助 Python 开发者编写更加高质量、可维护的代码,从而提高开发效率和代码质量。

    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. 指针、结构体、联合体的安全规范 ...

    Gtk-Glade编程详解[整理].pdf

    GTK+ 提供了一个强大的开发平台,而 Glade 提供了一个方便的 GUI 设计工具,两者结合起来,可以快速开发出高质量的 GUI 应用程序。 六、结论 GTK+/Glade 编程是一个非常强大的 GUI 编程技术,能够快速开发出高质量...

    软件设计与体系结构期末复习笔记(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从入门到精通-学习笔记整理863页.doc

    选择合适的开发工具可以提高开发效率和代码质量。 六、Java 项目的开发步骤 Java 项目的开发步骤包括编写源文件、编译源文件、运行程序等步骤。编写源文件需要使用文本编辑器或集成开发环境(IDE),编译源文件...

    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. 指针、结构体、联合体的安全规范 ...

    计算机组成原理(白中英)本科生试题库整理附答案.doc

    CRT 是一种显示器,能够显示高质量的图像和视频。 23. 为了便于实现多级中断,保存现场信息最有效的办法是采用堆栈。堆栈是一种数据结构,能够保存和恢复现场信息。 24. 特权指令是由操作系统核心程序执行的机器...

Global site tag (gtag.js) - Google Analytics