`

Java深拷贝除了通过实现Cloneable接口,另外还可以通过序列化实现对象的拷贝。

 
阅读更多
代码如下:
import java.io.Serializable;

public class CloneUtils {
	public static <T extends Serializable> T Clone(T obj) {
		T cloneObj = null;
		try {
			//字节数组流写入内存缓冲区
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(baos);
			oos.writeObject(obj);
			oos.close();
			
			//读取内存缓冲区数据,转换为字节
			ByteArrayInputStream bai = new ByteArrayInputStream(
					baos.toByteArray());
			ObjectInputStream ois = new ObjectInputStream(bai);
			cloneObj = (T) ois.readObject();
			ois.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return cloneObj;
	}
被拷贝的类,需要实现序列化接口Serializable接口。
分享到:
评论

相关推荐

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

    【java系列文章】java 基础知识

    2.Java为什么不直接实现lterator接口,而是实现lterable? 3.简述什么是值传递和引用传递? 4.概括的解释下Java线程的几种可用状态? 中级 1.简述Java同步方法和同步代码块的区别 ? 2.HashMap和Hashtable有什么区别? 3....

    java常用类解析及示例及一些工具类源代码

    主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...

    Test8.java

    该资源为Java源代码,设计了一个名为Complex的复数类,实现了复数运算的加减乘除和绝对值,覆盖了toString方法,实现了Cloneable接口。包含一个测试程序,提示用户输入两个复数,然后显示它们加减乘除之后的结果。

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    结合JVM解读浅拷贝和深拷贝

    java.lang.Cloneable和java.io.Serializable一样属于标记型接口,没有定义任何方法和属性。 一个类想要使用克隆方法 重写clone()方法,因为Object的clone()的修饰符是protected; @HotSpotIntrinsicCandidate ...

    Java深浅clone

    Java深浅clone测试代码 流拷贝 Cloneable

    Java2游戏编程.pdf

    4.1.7 java.lang.Cloneable 4.1.8 java.lang.Thread 4.2 java.io包 4.3 java.util包 4.3.1 java.util.StringTokenizer 4.3.2 java.util.Random 4.3.3 Java2集合框架 4.4 总结 4.5 练习 第2篇 Java 2-D图像开发和抽象...

    HashMap的特点与使用方法详解.docx

    HashMap 的特点: HashMap 的键必须是唯一的,不能重复。 HashMap 的键允许为 null,但只能有一个这样的键;值可以有多个 null。...HashMap 实现了 Cloneable 和 Serializable 接口,因此可以拷贝和序列化。

    java编程常见问题

    当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 47.java.lang.EnumConstantNotPresentException 枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象...

    JAVA高级程序设计测试题含答案.docx

    run()(正确答案) 第12题 【单选题】【2.00分】【概念理解】 实现线程体的方式除了继承Thread类,还可以实现()接口 [单选题] * A. Cloneable B. Runnable(正确答案) C. Iterable D. Serializable 第13题 【单选题...

    java-server-interview-questions:java服务端面试题整理

    java基础 1、Arrays.sort实现原理和Collections.sort实现原理...cloneable接口实现原理,浅拷贝or深拷贝 Java NIO使用 hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决 arraylist和linke

    java编程基础,应用与实例

    13.6 对象序列化(object serialization) 199 13.6.1 ObjectInput与ObjectOutput 199 13.6.2 ObjectOutputStream 200 13.6.3 ObjectInputStream 200 13.7 巩固练习 201 第14章 线程 203 14.1 Runtime类...

    java基础知识面试题

    不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。 2、对外提供的接口不同 Hashtable比HashMap多提供了elments() 和contains() 两个方法。 elments() 方法继承自...

    U10316024_HW_15_10:类 MyStack 实现 Cloneable 并使用深循环

    U10316024_HW_15_10 类 MyStack 实现 Cloneable 并使用深循环

    bigcoder84#study-notes#_4Object中的clone方法1

    Object类中的clone方法clone()方法的作用克隆方法用于创建对象的拷贝,为了使用clone方法,类必须实现java.lang.Cloneable接口

    java se和java ee基础功能点开发测试包

    该包围绕java se结合java ee的基础应用对目前最基础最常见的应用分别给以做了相关demo 具体包括有设计模式demo(设配模式、装饰模式、享元模式)、线程池设计方案、集合类容器demo、io流、Cloneable接口、自定义标签...

Global site tag (gtag.js) - Google Analytics