首页 > 编程语言 >java的serializable接口

java的serializable接口

时间:2024-06-20 11:55:04浏览次数:25  
标签:java object 接口 serializable 序列化 Serializable serialVersionUID

简介

Java 的 Serializable 接口是一个用于对象序列化的标记接口。序列化是指将对象的状态转换为字节流的过程,这样对象可以被保存到文件中、通过网络传输或在不同的 JVM 之间传递。反序列化则是指将字节流恢复为对象的过程。

Serializable 接口的作用

Serializable 接口本身没有任何方法,它只是一个标记接口,用来告诉 Java 序列化机制(例如 ObjectOutputStreamObjectInputStream)某个类的对象可以被序列化和反序列化。

import java.io.Serializable;

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

    // Constructors, getters, setters, etc.
}

序列化与反序列化

序列化

将对象转换为字节流并保存到文件或传输:

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializeExample {
    public static void main(String[] args) {
        MyClass object = new MyClass(1, "example");

        try (FileOutputStream fileOut = new FileOutputStream("object.ser");
             ObjectOutputStream out = new ObjectOutputStream(fileOut)) {
            out.writeObject(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

反序列化

将字节流恢复为对象:

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class DeserializeExample {
    public static void main(String[] args) {
        MyClass object = null;

        try (FileInputStream fileIn = new FileInputStream("object.ser");
             ObjectInputStream in = new ObjectInputStream(fileIn)) {
            object = (MyClass) in.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(object);
    }
}

serialVersionUID

为了保证在序列化和反序列化过程中版本的一致性,建议在每个实现 Serializable 接口的类中定义一个唯一的 serialVersionUID

private static final long serialVersionUID = 1L;

serialVersionUID 的作用是表明类的版本,在序列化和反序列化时会进行校验。如果类的 serialVersionUID 发生变化,那么在反序列化时会抛出 InvalidClassException 异常。

使用注意事项

安全性:不要反序列化不受信任的数据,可能会引起安全问题。
兼容性:在类的结构发生变化时,可能会影响序列化和反序列化的兼容性。
性能:序列化和反序列化操作可能会影响性能,特别是在处理大对象或大量对象时

标签:java,object,接口,serializable,序列化,Serializable,serialVersionUID
From: https://www.cnblogs.com/rdisheng/p/18258376

相关文章

  • IDEA~安装spring-javaformat插件
    相关文章springboot~代码风格统计spring-javaformat-maven-plugin插件springboot~spring-javaformat插件惹的祸说明在项目中,我们可以通过安装maven插件,spring-javaformat来达到代码统一的目的,而在idea中,为了与maven插件保持一致,我们最好也安装一个这个插件插件地址https:/......
  • API接口开发系列:店铺所有商品、商品详情、SKU价格详情图
    一、店铺所有商品API接口概述:店铺所有商品API接口是一种用于获取指定店铺下所有商品信息的接口。API接口接入(taobao2024api)通过这个接口,开发者可以获取商品的详细信息,包括商品的基本信息、价格、库存等关键属性,以满足前端展示和用户需求。接口设计:请求方式:通常采用GET请求......
  • 探索京东API接口:京东API接口概述丨京东API接口的特点
    一、引言在数字化快速发展的今天,电商行业已经成为全球经济的重要组成部分。而在这个庞大的生态系统中,API(应用程序接口)接口扮演着至关重要的角色。作为电商行业的领军者之一,京东不仅拥有庞大的商品库和完善的物流体系,还提供了丰富的API接口,API接口接入(taobao2024api)帮助开发者......
  • 探索拍立淘搜索相同商品数据接口:赋能电商智能化搜索新篇章
    一、引言随着电子商务的迅猛发展,消费者对于商品搜索的效率和精确度要求越来越高。拍立淘,作为阿里巴巴旗下的一款智能搜索工具,通过图像识别技术为消费者提供了便捷的购物体验。本文将重点探讨拍立淘搜索相同商品数据接口,揭示其在电商智能化搜索领域的重要作用,并展望其未来的发......
  • JavaScript基础部分知识点总结(Part3)
    函数的概念1.函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数。函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可......
  • 京东商品详情API接口,jd/item_get(属性规格Sku详情图等)
    京东商品详情API接口是京东开放平台提供的一项重要服务,API接口接入(taobao2024api)它允许第三方开发者通过调用API接口,获取京东平台上商品的详细信息。以下是关于京东商品详情API接口的清晰介绍:1.接口概述功能:用于获取京东商品的详细信息,如商品标题、价格、促销信息、图片、规......
  • JAVAscript运算符
    目录一、运算符    1.运算符(operator)也被称操作符,最用于实现赋值、比较和算数运算等功能的符号。    2.javascript中常用的有二、算术运算符    1.算数运算符概述    2.浮点数的精度问题    3.表达式和返回值三、递增和递减......
  • java小记-随机数、数组
    练习4:①随机数:类似scanner键盘录入的三步:答:(只能猜一次)如果继续猜呢:添加循环:注意:添加新的功能:保底,抽的次数到某个时刻,直接猜中,不管结果几何。②数组:......
  • Java项目-基于SpringCloud+springboot+vue的分布式架构网上商城系统(源码+数据库+文档
    源码获取:https://download.csdn.net/download/u011832806/89440647基于SpringCloud+SpringBoot+Vue的分布式架构网上商城系统   开发语言:Java   数据库:MySQL   技术:SpringCloud+SpringBoot+MyBatis+Vue.js+eureka   工具:IDEA/Ecilpse、Navicat、Maven经......
  • Java项目-基于ssm+vue的大学生兼职跟踪系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于ssm+Vue的大学生兼职跟踪系统开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven本文以Java为开发技术,实现了一个大学生兼职跟踪系统。大学生兼职跟踪系统的主要实现功能包括:管理员:首页、个人中心、商......