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

让我来详细讲解一下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日

相关文章

  • Java 超详细讲解核心类Spring JdbcTemplate

    Java 超详细讲解核心类Spring JdbcTemplate 简介 Spring JdbcTemplate 是 Spring Framework 提供的一个核心类,用于操作关系型数据库。使用 JdbcTemplate 可以避免手动创建和释放数据库连接的繁琐过程,同时也可以更加方便地执行 SQL 查询和操作数据库。 配置 在使用 Spring JdbcTe…

    Java 2023年5月19日
    00
  • 详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】

    详解js的延迟对象、跨域、模板引擎、弹出层、AJAX 本文主要介绍 JavaScript 中五个常用的技术点:延迟对象、跨域、模板引擎、弹出层和 AJAX。我们将使用示例来演示这五个技术点的应用。 延迟对象 延迟对象(Deferred Object)是 jQuery 中异步编程的核心概念之一。在 JavaScript 中,通常采用回调函数进行异步编程。而延迟…

    Java 2023年5月19日
    00
  • java基础-数组扩容详解

    Java基础-数组扩容详解 什么是数组扩容 在Java中,数组是一个固定长度的数据结构。当我们在使用数组时,如果需要添加更多的元素,则需要声明一个新的数组并复制所有旧元素到新数组中。这个过程称为“数组扩容”。 在Java中,数组扩容是自动完成的。当我们向一个已经装满元素的数组中添加新元素时,系统会自动创建一个新的数组,并将旧元素复制到新数组中。这个过程对用户…

    Java 2023年5月26日
    00
  • Java创建子线程的两种方法

    当我们需要在Java程序中创建一个新的线程时,我们有两种主要的方式。 方法一:通过继承Thread类创建线程 创建一个继承自Thread类的新类。 public class MyThread extends Thread { @Override public void run() { // 新线程执行的代码 } } 在该类中重写run()方法,将需要新线程执…

    Java 2023年5月18日
    00
  • java局域网聊天小程序

    Java局域网聊天小程序攻略 简介 本攻略介绍如何使用Java编写一个局域网聊天小程序。可以在同一局域网内的多台计算机之间进行聊天。 步骤 1. 创建Java项目 创建一个新的Java项目,命名为“ChatApp”。 2. 添加GUI 在项目中创建一个新的GUI类,命名为“ChatWindow”。在界面中添加一个文本区域用于显示聊天记录,一个文本框用于输入聊…

    Java 2023年5月23日
    00
  • Java的Struts框架报错“NullActionMappingException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NullActionMappingException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 ActionMapping对象为空:如果ActionMapping对象为空,则可能会出现此错误。在这种情况下,需要检查A…

    Java 2023年5月5日
    00
  • 散列算法与散列码(实例讲解)

    当我们需要在计算机中存储大量数据时,通常需要使用散列算法来处理数据。简单来说,散列算法就是将一个任意长度的输入,通过计算得到一个固定长度的输出,这个固定长度的输出就是散列码。 散列算法常用的应用场景包括密码存储和数据校验等。 常用散列算法 目前最常用的散列算法包括MD5、SHA-1、SHA-256等。这些算法的优点在于对于相同的输入,输出结果总是一样的。但是…

    Java 2023年5月19日
    00
  • 使用spring boot开发时java对象和Json对象转换的问题

    使用Spring Boot开发时Java对象和Json对象转换是必不可少的,因为在前后端交互、数据传输等过程中,经常需要用到Java对象和JSON对象相互转换。 下面我们就详细讲解如何在Spring Boot开发中正确地进行Java对象和Json对象的转换,包括以下内容: Json格式的依赖 首先需要在pom.xml文件中引入Jackson的依赖,Sprin…

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