Java实现序列化与反序列化的简单示例

yizhihongxing

下面我将详细讲解“Java实现序列化与反序列化的简单示例”的完整攻略。

什么是序列化和反序列化?

Java中的序列化是指将对象转换为字节流,可以将这些字节保存到磁盘上,或通过网络传输到远程系统;而反序列化则是将字节流从磁盘或者网络中读取出来,重新生成该对象的过程。

这两个过程是Java编程中的重要概念,使程序能够跨越网络连接和持久化存储等,也是Java远程方法调用(RMI)和分布式对象管理(EJB)的基础。

序列化的实现

Java序列化需要实现Serializable接口,并提供serialVersionUID静态变量。以下是一个基本的示例程序:

import java.io.*;

public class SerializationDemo implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;

    public SerializationDemo(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void main(String args[]) {
        SerializationDemo demo = new SerializationDemo("Tom", 25);
        String filePath = "serializationdemo.ser"; //保存序列化对象的文件路径

        // 序列化对象
        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(demo);
            oos.close();
            fos.close();
            System.out.println("Serialization successful!");
        } catch (IOException e) {
            System.out.println("Serialization failed: " + e.getMessage());
        }
    }
}

在上面的示例程序中,我们实现了一个SerializationDemo类,该类实现了Serializable接口,并包含了一个main方法,用于测试对象的序列化。

程序执行后,我们可以在指定路径下找到一个名为serializationdemo.ser的二进制文件。

反序列化的实现

反序列化的过程非常简单,只需要使用ObjectInputStream流来读取保存序列化对象的二进制文件即可,代码如下:

import java.io.*;

public class DeserializationDemo {
    public static void main(String args[]) {
        String filePath = "serializationdemo.ser"; //保存序列化对象的文件路径

        // 反序列化对象
        try {
            FileInputStream fis = new FileInputStream(filePath);
            ObjectInputStream ois = new ObjectInputStream(fis);
            SerializationDemo demo = (SerializationDemo) ois.readObject();
            ois.close();
            fis.close();
            System.out.println("Deserialization successful!\nName: " + demo.name + "\nAge: " + demo.age);
        } catch (IOException e) {
            System.out.println("Deserialization failed: " + e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println("Deserialization failed: " + e.getMessage());
        }
    }
}

在这个示例程序中,我们使用ObjectInputStream流读取保存SerializationDemo对象的二进制文件,然后将读取到的对象转换为SerializationDemo类型。

执行这个程序后,你将看到Deserialization successful!SerializationDemo对象的名称和年龄被打印出来。

以上是一个简单的序列化和反序列化示例,它演示了Java的序列化和反序列化操作。通过这个示例程序,我们可以清晰地了解这两个过程的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现序列化与反序列化的简单示例 - Python技术站

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

相关文章

  • SpringBoot错误处理流程深入详解

    SpringBoot错误处理流程深入详解 在SpringBoot开发过程中,我们经常需要处理错误。因此,对于SpringBoot错误处理的流程及其细节进行深入的理解,可以对我们的开发工作有所帮助。 SpringBoot错误处理流程概述 SpringBoot错误处理流程分为两部分:异常处理和404处理。 异常处理采用@ControllerAdvice注解,所有…

    Java 2023年5月27日
    00
  • Java实现的数字签名算法RSA完整示例

    针对“Java实现的数字签名算法RSA完整示例”,我提供以下攻略: 1. 什么是数字签名算法RSA RSA是一种基于大素数因子分解难题的公钥加密算法,也可以应用于数字签名,其原理是利用公钥对数据进行加密,利用私钥对数据进行解密或者签名。RSA算法广泛应用于数字签名和网上支付等安全领域。 2. Java中RSA的实现 Java中提供了JCE支持,其中包括了对R…

    Java 2023年5月18日
    00
  • Java泛型与注解全面分析讲解

    Java泛型与注解是Java编程中非常重要的特性。下面我来详细讲解“Java泛型与注解全面分析讲解”的完整攻略。 一、Java泛型 1. 什么是Java泛型 Java泛型是指,当一个类、接口、方法中需要支持多种数据类型的时候,使用泛型可以让代码更加简洁、易读、健壮性更好。Java泛型分为泛型类、泛型接口和泛型方法。Java泛型使用中需要注意的是类型擦除和通配…

    Java 2023年5月26日
    00
  • 简析Java中的util.concurrent.Future接口

    简析Java中的util.concurrent.Future接口 java.util.concurrent.Future是Java中实现异步操作和并发编程的一个核心接口,它的主要作用是提供一个机制,允许异步任务返回一个结果和处理异常,这个结果将在未来的某个时间点通过Future对象来获取。即,当我们发起一个异步请求后,系统会立即返回一个Future对象,通过…

    Java 2023年5月25日
    00
  • spring jpa集成依赖的环境准备及实体类仓库编写教程

    下面就为您详细讲解“spring jpa集成依赖的环境准备及实体类仓库编写教程”。 准备环境 在集成 spring jpa 之前,需要先准备好以下环境: Maven Java JDK Spring Boot 添加依赖 在 pom.xml 文件中,添加以下依赖: <dependencies> <dependency> <group…

    Java 2023年5月20日
    00
  • Centos7安装配置tomcat9并设置自动启动的方法

    下面是 “Centos7安装配置tomcat9并设置自动启动的方法” 的完整攻略。 1. 安装Tomcat9 1.1 下载Tomcat9二进制包 到Tomcat的官网https://tomcat.apache.org/download-90.cgi下载对应版本的Tomcat二进制包。 例如,下载 Tomcat 9.0.46 的二进制包 $ curl -O h…

    Java 2023年5月19日
    00
  • Java实现飞机大战-连接数据库并把得分写入数据库

    Java实现飞机大战-连接数据库并把得分写入数据库的攻略如下: 第一步:建立数据库 创建一个数据库,可使用MySQL或其他数据库软件,此处以MySQL为例。 在该数据库下创建一个用户,拥有读写权限。 创建一个存储分数的数据表,可命名为score,包含两个字段,一个为id,一个为score。 示例代码如下: CREATE DATABASE games; GRA…

    Java 2023年5月20日
    00
  • spring security 自定义Provider 如何实现多种认证

    下面是关于如何实现Spring Security自定义Provider实现多种认证的完整攻略: 1. 需求分析 Spring Security是Spring框架下的安全管理框架,支持多种认证方式。但有时候,我们需要使用自定义的认证方式来满足业务需求。例如,基于软令牌(软件生成的令牌)进行认证或基于微信小程序的认证等。 在这样的需求下,我们可以使用Spring…

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