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实现手写自旋锁的示例代码

    下面我将详细讲解“Java实现手写自旋锁的示例代码”的完整攻略,具体过程如下: 1. 了解自旋锁的概念和实现原理 自旋锁是一种轻量级锁,适用于同步的代码执行时间很短暂的情况。自旋锁的实现方式是在进入临界区之前,线程不断的尝试占用锁资源,而不是去睡眠等待。当锁已经被占用时,其他线程会处于忙等待的状态,消耗了一定的CPU时间,但是相对于线程被唤醒后重新竞争锁需要…

    Java 2023年5月19日
    00
  • Java实现用户管理系统

    Java实现用户管理系统攻略 系统设计 在实现用户管理系统之前,需要对系统进行设计。以下是设计具体步骤: 1. 需求分析 首先对用户管理系统的需求进行分析,了解该系统的基本功能和操作流程。 2. 数据库设计 根据需求分析,设计数据库表结构,存储用户信息等数据。 3. 系统架构设计 根据需求和数据库设计,设计系统架构,包括系统模块划分、模块间的交互等。 4. …

    Java 2023年5月18日
    00
  • Java Web程序实现返回JSON字符串的方法总结

    下面就是针对“Java Web程序实现返回JSON字符串的方法总结”的完整攻略: 1.使用Jackson库 在Java Web程序中,可以使用Jackson库将Java对象转换为JSON字符串。使用Jackson库需要添加依赖,Maven中添加如下依赖: <dependency> <groupId>com.fasterxml.jack…

    Java 2023年5月26日
    00
  • 浅谈springmvc 通过异常增强返回给客户端统一格式

    以下是关于“浅谈SpringMVC通过异常增强返回给客户端统一格式”的完整攻略,其中包含两个示例。 浅谈SpringMVC通过异常增强返回给客户端统一格式 在SpringMVC中,我们可以通过异常增强的方式来统一处理异常,并将异常信息以统一的格式返回给客户端。在本文中,我们将讲解如何通过异常增强的方式来实现这一功能。 异常增强实现原理 SpringMVC通过…

    Java 2023年5月17日
    00
  • Java基础之教你怎么用代码一键生成POJO

    下面是Java基础之教你怎么用代码一键生成POJO的完整攻略。 简介 POJO指的是“普通Java对象”(Plain Old Java Object),它是一种基础的Java类,通常用于存储数据。在实际开发中,我们需要大量地编写POJO,这个过程比较繁琐。因此,我们可以使用一些工具,来快速地生成POJO的代码。本文将介绍一种使用IDEA插件一键生成POJO的…

    Java 2023年5月19日
    00
  • JAVA/JSP学习系列之二(Tomcat安装)

    JAVA/JSP学习系列之二(Tomcat安装) 概述 本文将介绍如何安装Tomcat服务器。Tomcat是一种开放源代码软件,它实现了Java Server Pages和Java Servlet技术,用来提供Java Web应用服务。Tomcat服务器是一个轻量级的应用服务器,可以运行在多个操作系统平台上。 环境要求 Java Development Ki…

    Java 2023年6月15日
    00
  • SpringBoot 表单提交全局日期格式转换器实现方式

    下面就是 “SpringBoot 表单提交全局日期格式转换器实现方式” 的完整攻略。 1. 背景 在 SpringBoot 中,表单提交中的日期格式转换一直是困扰开发者的问题。SpringBoot 提供了很多方式解决这个问题,其中最简单的方式就是通过实现全局日期格式转换器来解决。 2. 实现方式 以下是实现全局日期格式转换器的步骤: 2.1 新建全局日期格式…

    Java 2023年5月19日
    00
  • Spring Security实现退出登录和退出处理器

    下面是Spring Security实现退出登录和退出处理器的完整攻略。 1. Spring Security实现退出登录 在Spring Security中,要实现退出登录功能,需要使用logout()方法。这个方法可以在Spring Security中定义一个LogoutConfigurer来使用。以下是实现退出登录的步骤。 步骤1:在Spring Se…

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