java序列化和java反序列化示例

yizhihongxing

让我来详细讲解一下Java序列化和反序列化的示例。首先,我们需要明确一下什么是Java序列化和反序列化:

  • Java序列化:Java序列化是指将Java对象转换为字节流,以便在网络上传输或保存到文件或数据库中。
  • Java反序列化:Java反序列化则是将序列化的字节流转换为Java对象。

在Java中,实现序列化和反序列化的方式主要有两个 API,分别是 Serializable 和 Externalizable。其中,Serializable 更为常用,因为它比 Externalizable 更为简单,但后者更加灵活,可定制性更高。

下面,我将分别介绍 Java序列化和反序列化的示例:

Java序列化示例

Java序列化示例的目的是将某个Java对象进行序列化,并将序列化结果写入到文件中。示例代码如下:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class SerializeDemo {
    public static void main(String[] args) {
        Employee e = new Employee();
        e.name = "张三";
        e.address = "北京市海淀区";
        e.SSN = 1001;
        e.number = 101;
        try {
            FileOutputStream fileOut = new FileOutputStream("employee.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(e);
            out.close();
            fileOut.close();
            System.out.printf("Serialized data is saved in employee.ser");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

class Employee implements java.io.Serializable {
    public String name;
    public String address;
    public transient int SSN; // 需要排除的属性
    public int number;
}

在这个示例中,我们定义了一个名为 Employee 的类,并将它实现了 Serializable 接口。然后,在主函数中,我们创建了一个 Employee 实例 e,并对其进行了一些赋值操作。接下来,我们将该对象通过 ObjectOutputStream 写入文件 employee.ser 中,完成了 Java序列化的过程。

Java反序列化示例

接下来是 Java反序列化示例,示例目的是将上面 Java序列化生成的 employee.ser 文件,反序列化为一个 Employee 对象,并打印其中的一些属性。示例代码如下:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class DeserializeDemo {
    public static void main(String[] args) {
        Employee e = null;
        try {
            FileInputStream fileIn = new FileInputStream("employee.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            e = (Employee) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException i) {
            i.printStackTrace();
            return;
        } catch (ClassNotFoundException c) {
            System.out.println("Employee class not found");
            c.printStackTrace();
            return;
        }
        System.out.println("Deserialized Employee...");
        System.out.println("Name: " + e.name);
        System.out.println("Address: " + e.address);
        System.out.println("SSN: " + e.SSN);
        System.out.println("Number: " + e.number);
    }
}

在这个示例中,我们首先创建了一个为空的 Employee 对象,然后打开了之前序列化的文件 employee.ser,并通过 ObjectInputStream 将这个文件读取出来,从而完成了 Java反序列化的过程。最后通过打印的方式,我们验证了 Employee 对象已经被成功地重新构建出来,并包含了对应的属性。

以上就是 Java序列化 和 Java反序列化 示例的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java序列化和java反序列化示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringMVC执行步骤、Model的使用详解

    以下是关于“SpringMVC执行步骤、Model的使用详解”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用的Java Web开发框架,它可以帮助开发者快速构建Web应用程序。本攻略将详细讲解SpringMVC的执行步骤和Model的使用方法,帮助读者更好地掌握SpringMVC框架的使用方法。 2. SpringMVC的执行步骤 …

    Java 2023年5月16日
    00
  • java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    下面我将详细讲解java中常见的几种排序算法,分别为合并排序算法、冒泡排序算法、选择排序算法、插入排序算法和快速排序算法。 合并排序算法(Merge Sort) 合并排序算法也称为归并排序,其基本思想为将待排序的序列分成若干个子序列,然后对每个子序列进行排序,最后将所有子序列合并成一个有序序列。 以下是Java实现合并排序的示例代码: public stat…

    Java 2023年5月19日
    00
  • Java解析XML(4种方式)案例详解

    Java解析XML(4种方式)案例详解 1. Java解析XML的概念 在Java开发中,我们经常需要读取和修改一些XML格式的文件。XML全称为Extensible Markup Language(可扩展标记语言),是W3C组织推出的标记语言。 XML是一种纯文本格式,用来描述数据。它通过标签的方式来组织数据,标签包含了属性和值,这些在XML文件中都可以很…

    Java 2023年5月19日
    00
  • Spring boot2.0 日志集成方法分享(1)

    Spring Boot2.0 日志集成方法分享(1) 在Spring Boot2.0中,我们可以使用多种方式来集成日志框架,如Logback、Log4j2、Java Util Logging等。本文将详细讲解Spring Boot2.0日志集成方法的完整攻略,并提供两个示例。 1. 集成Logback 以下是集成Logback的基本流程: 在pom.xml文…

    Java 2023年5月15日
    00
  • 详解Java 本地接口 JNI 使用方法

    详解Java本地接口JNI使用方法 什么是JNI? JNI全称Java Native Interface,它是Java语言调用非Java语言(如C、C++等)的接口,通过这个接口可以让Java程序获得底层操作系统平台的原生支持。 如何使用JNI? JNI的使用步骤可以分为几个步骤: 编写Java程序 编写本地方法 生成.h头文件 编写C/C++程序 生成动态…

    Java 2023年5月26日
    00
  • Java 中EasyExcel的使用方式

    下面是Java中EasyExcel的使用方式的完整攻略: 1. 简介 EasyExcel是一款基于Java开发的、功能强大的Excel读写解决方案,使用起来方便快捷,支持读写Excel、CSV、HTML、JSON等文件格式,并且具有高性能,内存消耗低等优点,是目前比较流行的Excel读写工具之一。 2. 如何使用 2.1 引入依赖 在项目中引入EasyExc…

    Java 2023年6月2日
    00
  • Java异常Exception详细讲解

    Java异常Exception详细讲解 什么是Java异常Exception? 在Java中,异常(Exception)是指程序在运行时遇到的错误或意外情况。当Java程序出现异常时,会抛出一个异常对象,可以通过捕获和处理这个异常来防止程序崩溃。Java中的异常分为三种类型:Checked Exception(受检异常)、Runtime Exception(…

    Java 2023年5月27日
    00
  • ajax传递多个参数的实现代码

    当我们使用Ajax技术进行数据交互时,有时需要传递多个参数。那么如何实现ajax传递多个参数的代码呢?下面是一份完整攻略。 1. GET请求传多个参数 通过在URL后面附加参数的方式,可以将多个参数传递到服务器端,示例如下: $.ajax({ type: "GET", url: "example.php", data:…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部