Java序列化常见实现方法代码实例

Java序列化常见实现方法代码实例

Java序列化是将Java对象转化为字节流的过程,方便进行Java对象在网络中的传输或者持久化储存。本文将介绍Java序列化的常见实现方法以及代码实例。

Java序列化实现方法

Serializable接口

Java的原生序列化实现采用Serializable接口,它是Java提供的一个标记接口,将一个类实现Serializable接口后,Java运行时系统就能够对该对象进行序列化操作。

示例代码:

import java.io.*;

public class SerializationDemo {
    public static void main(String[] args) {
        Employee e = new Employee("John Doe", "Manager", 5000);
        try {
            FileOutputStream fileOut = new FileOutputStream("employee.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(e);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved in employee.ser");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

class Employee implements Serializable {
    public String name;
    public String profession;
    public int salary;

    public Employee(String name, String profession, int salary) {
        this.name = name;
        this.profession = profession;
        this.salary = salary;
    }
}

Externalizable接口

Externalizable接口是Java提供的第二种序列化方式,相对于Serializable接口,Externalizable接口强制要求对对象中的所有成员变量进行手动序列化和反序列化操作。

示例代码:

import java.io.*;

public class SerializationDemo {
    public static void main(String[] args) {
        Employee e = new Employee("John Doe", "Manager", 5000);
        try {
            FileOutputStream fileOut = new FileOutputStream("employee.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(e);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved in employee.ser");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

class Employee implements Externalizable {
    public String name;
    public String profession;
    public int salary;

    public Employee() {}

    public Employee(String name, String profession, int salary) {
        this.name = name;
        this.profession = profession;
        this.salary = salary;
    }

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(name);
        out.writeObject(profession);
        out.writeInt(salary);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        name = (String) in.readObject();
        profession = (String) in.readObject();
        salary = in.readInt();
    }
}

总结

本文介绍了Java序列化的两种常见实现方法及代码示例,其中,Serializable接口是Java原生序列化方式,而Externalizable接口则要求手动序列化所有成员变量。在实际使用中,需根据实际情况进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java序列化常见实现方法代码实例 - Python技术站

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

相关文章

  • 浅谈MyBatis 事务管理

    浅谈MyBatis 事务管理 MyBatis 是一个非常强大的支持事务管理的 ORM 框架。MyBatis 不仅为我们提供了简单易懂的事务管理 API,而且还支持灵活的自定义事务管理器。这篇文章将会详细讲解 MyBatis 的事务管理机制,同时提供一些示例来说明如何使用 MyBatis 进行事务管理。 MyBatis 的事务管理机制 MyBatis 的事务管…

    Java 2023年5月19日
    00
  • Log4j2 重大漏洞编译好的log4j-2.15.0.jar包下载(替换过程)

    针对“Log4j2 重大漏洞编译好的log4j-2.15.0.jar包下载(替换过程)”这个问题,我来给出完整的攻略。大致流程如下: 下载log4j-2.15.0.jar包 查找使用Log4j2进行日志记录的应用程序 停止应用程序 将原来的log4j-core jar包和log4j-api jar包替换成log4j-2.15.0.jar包 重新启动应用程序,…

    Java 2023年5月20日
    00
  • Java编程接口回调一般用法代码解析

    让我来为你详细讲解“Java编程接口回调一般用法代码解析”的攻略。 什么是Java编程接口回调 Java编程接口回调是一种常见的编程思想,它将一个方法作为参数传递给另一个方法,以使后者在适当的时候调用前者。这种思想可以被认为是一种事件驱动或翻转控制的编程范式,因为它允许调用者通知被调用者,而不是被调用者直接调用另一个方法。 Java编程接口回调的一般用法 J…

    Java 2023年5月23日
    00
  • 常见的Java性能调优工具有哪些?

    Java性能调优是提高应用程序性能和并发运行效率的必要手段,为了提高Java应用程序的性能,需要使用一些专业的性能调优工具。 常见的Java性能调优工具有以下几种: JProfiler:JProfiler是一种动态的Java代码性能分析工具,主要特点是高效和低侵入性,可以帮助开发人员快速定位Java应用程序的性能瓶颈,并提出优化建议。使用JProfiler进…

    Java 2023年5月11日
    00
  • 详解Spring Security 中的四种权限控制方式

    下面我将详细讲解“详解Spring Security 中的四种权限控制方式”: 1. 认证和鉴权 几乎所有的Spring Security权限控制都需要经过两个基本步骤:认证和鉴权。 认证(Authentication):指确定用户的身份,通常是用户提供用户名和密码给系统来验证其是否能够登录。 鉴权(Authorization):指确定用户是否有权限访问某些…

    Java 2023年5月20日
    00
  • 高命中率的varnish缓存配置分享

    下面我来为你详细讲解“高命中率的varnish缓存配置分享”的完整攻略。 一、背景介绍 Varnish是一款高性能的HTTP反向代理服务器,它可以加速站点的访问速度,并为站点提供缓存服务。在使用Varnish时,我们需要合理配置缓存策略来提高缓存命中率和性能。 二、缓存策略配置 1. 确定缓存内容 首先,我们需要确定哪些内容需要缓存。可以根据站点的特点和访问…

    Java 2023年6月16日
    00
  • JavaWeb实现图形报表折线图的方法

    下面就是JavaWeb实现图形报表折线图的方法的完整攻略: 1. 准备工作 在实现JavaWeb图形报表折线图前,我们需要先准备好以下资源: 前端使用的图表库,例如ECharts、Highcharts等; 后端使用的JavaWeb框架,例如Spring、Struts2等; 数据库,用于存储数据; 数据库连接池,用于连接数据库。 2. 使用ECharts绘制折…

    Java 2023年6月15日
    00
  • springMVC框架下JQuery传递并解析Json数据

    下面是详细的攻略: 1. 概述 Spring MVC 是一个常用的 Java Web 开发框架,而 jQuery 是一个非常流行的 JavaScript 库。在前端和后端协作开发的过程中,我们常常需要通过 AJAX 来进行异步数据交互。传递 JSON 数据,并解析 JSON 数据是基于 AJAX 进行异步交互的常见需求之一。本文将详细介绍在 Spring M…

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