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日

相关文章

  • JAVA 字符串加密、密码加密实现方法

    JAVA字符串加密方法 在JAVA中,常见的字符串加密方法有MD5加密、SHA1加密和BASE64加密。下面分别介绍每种加密方法。 MD5加密 MD5全名为Message-DigestAlgorithm 5,即消息摘要算法5。它是一种单向加密算法,加密后的结果不能被逆向破解。MD5加密的原理是将任意长度的数据(字符串)通过一定的算法变换成一个固定长度的摘要信…

    Java 2023年5月27日
    00
  • 使用java实现网络爬虫

    使用Java实现网络爬虫可以分为以下步骤: 1. 定义爬虫开始的入口URL 入口URL是爬虫开始爬取网页的地方,可以是指定的网页或是多个网页列表。定义入口URL的方式可以使用字符串形式,也可以使用类似Java URL类的URL对象。比如: String startUrl = "https://example.com"; URL url =…

    Java 2023年5月18日
    00
  • 什么是堆区?

    以下是关于 Java 堆区的详细讲解和使用攻略: 堆区的作用是什么? Java 堆区(Heap)是一种用于存储对象实例的内存区域。堆区是线程共享的,其大小可以通过 -Xmx 和 -Xms 参数进行设置。 堆区的使用攻略 使用 Java 堆区,需要注意以下几点: 在程序开发中需要合理使用内存,避免出现内存泄漏和内存溢出等问题。 在实现自定义的类时,需要注意对象…

    Java 2023年5月12日
    00
  • 29基于java的在线考试系统设计与实现

    本章节来介绍一个基于java的在线考试系统的实现 系统概要 近年来,随着世界各国需要参加考核的人员与日俱增,单纯依靠传统的人工安排考场和监考人员的纸质化考试逐渐显示出了效率低,易发生冲突的缺陷,这时,在线考试系统便应运而生,此种考试方式以方便快捷高效等优点将越来越适用于如今的各项考试、考核。此外,无纸化在线考试对考试人员和审阅人员均提供了便捷。因此,本文将主…

    Java 2023年5月8日
    00
  • 使用spring框架实现数据库事务处理方式

    使用Spring框架可以很方便地实现数据库事务处理方式,下面是完整攻略。 1. Spring事务管理的基本概念 在Spring框架中,事务管理是通过Transaction Manager来实现的。它是一个抽象的接口,具体的实现可以是JDBC、Hibernate或JPA等。Spring框架在进行事务管理时,主要使用以下几个概念: PlatformTransac…

    Java 2023年5月20日
    00
  • Spring Boot实现微信小程序登录

    下面是Spring Boot实现微信小程序登录的完整攻略: 一、前期准备 确认已经拥有一个注册了小程序账号的微信号,并且已经拥有小程序的AppID和AppSecret 通过小程序开发文档,了解小程序登录的过程和参数 二、Spring Boot集成微信登录 添加Spring Boot对于微信登录的依赖: <dependency> <group…

    Java 2023年5月23日
    00
  • SpringMVC结合天气api实现天气查询

    下面我将针对“SpringMVC结合天气API实现天气查询”的完整攻略,进行详细讲解。 1. 准备工作 在开始之前,我们需要做以下准备工作: 注册一个高德开放平台的账号,并申请一个天气API的key。 新建一个Spring Boot项目,并在pom.xml文件中添加必要的依赖。 <dependencies> <!–Spring Boot …

    Java 2023年6月16日
    00
  • JavaFX实现简易时钟效果(二)

    下面是详细的攻略: 1. 引言 本文将讲解如何使用JavaFX实现一个简易的时钟效果。主要涵盖以下几个方面的内容: JavaFX的基础知识及使用方法 JavaFX中时间相关的API 通过JavaFX实现时钟效果的思路和具体实现方法 2. 实现思路 我们需要实现一个数字时钟的效果,需要使用到JavaFX提供的数字、文本和时钟控件。实现思路如下: 创建一个Jav…

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