`

对象序列化和反序列化

 
阅读更多
  • 当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
  • 当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
  • static,transient后的变量不能被序列化;






public abstract class ObjectUtils {




	public static byte[] serializeObject(Object o) throws IOException {
		if (o == null) {
			return null;
		}
		ByteArrayOutputStream byteStream = new ByteArrayOutputStream(1024);
		ObjectOutputStream objectStream = new ObjectOutputStream(byteStream);
		try {
			objectStream.writeObject(o);
			return byteStream.toByteArray();
		} finally {
			byteStream.close();
			objectStream.close();
		}
	}

	public static Object unserializeObject(byte[] bytes) throws IOException, ClassNotFoundException {
		if (bytes == null) {
			return null;
		}
		ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
		ObjectInputStream objectStream = new ObjectInputStream(byteStream);
		try {
			return objectStream.readObject();
		} finally {
			byteStream.close();
			objectStream.close();
		}
	}
}




克隆对象:


    public static <T> T clone(T obj) throws Exception {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bout);
        oos.writeObject(obj);
 
        ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bin);
        return (T) ois.readObject();
 
        // 说明:调用ByteArrayInputStream或ByteArrayOutputStream对象的close方法没有任何意义
        // 这两个基于内存的流只要垃圾回收器清理对象就能够释放资源,这一点不同于对外部资源(如文件流)的释放
    }



分享到:
评论

相关推荐

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  &lt;groupId&gt;com.github.xsonorg&lt;/groupId&gt;  &lt;artifactId&gt;xson-core  &lt;version&gt;1.0.1 ...

    java对象序列化和反序列化

    综上,Java对象序列化和反序列化是Java开发中的基础技能,它们在数据持久化、网络通信等方面发挥着关键作用。了解并掌握这些知识,能够帮助开发者更好地设计和实现各种功能。在实际应用中,需要注意安全性和版本兼容...

    c#对象序列化和反序列化,压缩流

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转化为可存储或可传输的数据格式,例如XML、JSON或二进制,以便于保存、恢复或者在网络间传递。而“压缩流”则涉及到数据的压缩和解...

    对象序列化和反序列化流.xmind

    对象序列化和反序列化流

    对象序列化和反序列化是怎么回事

    对象序列化和反序列化是计算机编程中的重要概念,尤其在数据存储、网络通信和状态保存等场景下广泛应用。在Java、C#等面向对象语言中,这些操作扮演着关键角色。本文将深入探讨对象序列化和反序列化的概念、用途、...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...

    c#对象序列化与反序列化实例

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许开发者将复杂的对象状态转换为可存储或可传输的数据格式,如XML、JSON或二进制流。对象序列化通常用于持久化数据、跨进程通信、网络传输等场景。下面...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    基于C#+XML实现的对象序列化与反序列化的程序例子代码

    对象序列化和反序列化是软件开发中常用的技术,特别是在数据存储、网络传输以及状态保存等领域。在.NET框架中,C#提供了强大的支持来实现这一功能。本篇将详细讲解如何利用C#和XML来实现对象的序列化与反序列化。 ...

    C++ JSON 序列化与反序列化

    1. 复杂类型的处理:除了基本类型外,还可以序列化和反序列化自定义类、结构体以及容器(如vector、map等)。对于自定义类型,通常需要重载`operator和`operator&gt;&gt;`,或者使用nlohmann/json库中的`to_json`和`from_...

    对象的序列化和反序列化1

    在Java编程中,对象的序列化和反...总之,Java中的对象序列化和反序列化是处理对象状态的重要工具,适用于多种场景,但同时也需要注意其潜在的安全和性能影响。理解这些概念对于编写高效、安全的Java应用程序至关重要。

    C#对象序列化与反序列化

    ### C#对象序列化与反序列化 #### 1. 对象序列化的介绍 ##### (1).NET支持对象序列化的几种方式 .NET框架提供了多种序列化机制,它们各自有不同的应用场景和特点。 - **二进制序列化**: - **定义**:二进制...

    序列化和反序列化的封装类

    在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...

    序列化和反序列化dll文件和proto

    在IT领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络通信和分布式系统中。它们涉及将对象的状态转换为可持久化的格式(序列化),以及将这种格式还原回原来的对象(反序列化)。本文将深入探讨这两...

    反序列化作用

    在分布式计算和网络编程中,对象序列化和反序列化是实现远程对象调用和跨平台数据交换的基础。它允许对象状态跨越不同网络节点传输,实现对象的“深复制”。同时,在EJB、JMS等技术框架中也广泛使用了序列化机制,...

    hessian学习基础篇——序列化和反序列化

    在IT领域,序列化和反序列化是两个关键的概念,特别是在网络通信、数据持久化以及对象存储中。本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过...

    用Javascript将form所有内容序列化和反序列化的例子。

    - **支持嵌套数据结构**:如果表单数据包含数组或对象,可能需要自定义序列化和反序列化逻辑,例如使用JSON.stringify()和JSON.parse()。 在`index.html`中,你可以创建一个表单,并在JavaScript文件(js)中实现上述...

    java序列化和反序列化的方法

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    学生管理系统(序列化和反序列化)

    序列化和反序列化是这个系统的关键技术,它们允许程序将对象的状态转化为可存储或传输的形式,然后在需要时还原为原来的对象。以下是对这两个概念的详细解释以及在学生管理系统中的应用。 1. **序列化**:序列化是...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    前者代表对象输出流,具备`writeObject(Object obj)`方法,可以将对象序列化并写入到目标输出流;后者代表对象输入流,其`readObject()`方法能从输入流中读取字节流并反序列化为对象。 为了使一个Java对象能够被...

Global site tag (gtag.js) - Google Analytics