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日

相关文章

  • 基于EJB技术的商务预订系统的开发

    开发基于EJB技术的商务预订系统可以分为以下几个步骤: 1. 需求分析和系统设计 在需求分析和系统设计阶段,需要考虑以下因素: 系统的功能需求,例如用户登录、商品展示、购物车管理、订单管理、支付管理等; 系统的性能需求,例如用户并发量、数据处理量、响应时间、可靠性等; 系统的架构设计,例如服务器端容器的选择、数据库的设计、系统的分层设计等。 示例1:用户登录…

    Java 2023年6月15日
    00
  • Tomcat在Linux服务器上的BIO、NIO、APR模式设置方法

    Tomcat在Linux服务器上的BIO、NIO、APR模式设置方法攻略 Tomcat是一款使用广泛的Java Web应用服务器,在Linux服务器上也很常见。Tomcat的性能和稳定性与其运行模式密切相关,本文将详细介绍如何在Linux服务器上设置Tomcat的BIO、NIO、APR三种模式,让Tomcat运行更加高效和稳定。 BIO模式设置方法 BIO是…

    Java 2023年5月19日
    00
  • Java的Hibernate框架中的基本映射用法讲解

    Java的Hibernate框架是一种非常流行的ORM(对象关系映射)框架,它提供了许多映射用法的实现,通过这些映射用法可以将数据库中的数据与Java对象进行自动转换。下面详细讲解一下Hibernate框架中的基本映射用法。 Hibernate框架中的基本映射用法 1. 建立数据表与Java类的映射 Hibernate框架中的一个最基本的映射用法就是建立数据…

    Java 2023年5月19日
    00
  • 详解Java中用于查找对象哈希码值的hashCode()函数

    题目:详解Java中用于查找对象哈希码值的hashCode()函数 在面向对象编程中,对象的哈希码(hash code)是一个有限整数,用于为该对象提供一个快速的标识。Java中的hashCode()函数是用于计算对象哈希值的函数。本篇攻略将介绍关于Java中hashCode()函数的相关知识。 什么是哈希码? 哈希码是一个由Java中Object类定义的一…

    Java 2023年5月26日
    00
  • java实现斐波那契数列的3种方法

    以下是详细讲解“Java实现斐波那契数列的3种方法”的完整攻略。 一、斐波那契数列简介 斐波那契数列(Fibonacci Sequence)是一个非常经典的数学问题,它的定义如下: 斐波那契数列是一列数字,第一和第二项为 1,之后的每一项都是前两项之和。 数列的前几项为:1,1,2,3,5,8,13,21,34,55,89,144,… … 二、Java实现斐…

    Java 2023年5月19日
    00
  • springboot结合全局异常处理实现登录注册验证

    下面我将为你详细讲解“Spring Boot结合全局异常处理实现登录注册验证”的完整攻略。 1. 前置知识 在学习此内容之前,你需要对以下技术有一定的了解: Spring Boot Spring MVC Spring Security Maven 2. 添加依赖 首先,我们需要在pom.xml文件中添加一些依赖。这些依赖包括: <!– Spring …

    Java 2023年5月25日
    00
  • WebSocket整合SSM(Spring,Struts2,Maven)的实现示例

    下面我将为你详细讲解“WebSocket整合SSM的实现示例”攻略。 一、实现方案 我们的实现方案是使用Spring+Struts2+MyBatis构建一个SSM项目并整合WebSocket。 1.1 准备工作 首先需要准备以下开发环境 JDK 1.8 Eclipse Tomcat 8.0及以上版本 Maven 1.2 导入项目 使用Maven创建一个Web…

    Java 2023年5月20日
    00
  • 如何使用动态字节码生成框架?

    使用动态字节码生成框架可以通过编写Java代码来动态生成字节码,从而在运行时生成类并加载。它可以用于动态地创建类、修改和替换类方法、篡改类的属性等场景。常用的动态字节码生成框架包括ASM、Javassist、ByteBuddy等。 以下是使用ASM和Javassist两个框架的使用攻略: 使用ASM生成动态字节码 步骤一:创建一个ClassWriter实例 …

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