美文网首页
Java的序列化和反序列化

Java的序列化和反序列化

作者: 雅阁驸马 | 来源:发表于2021-03-15 18:06 被阅读0次

From:https://blog.csdn.net/qq_27093465/article/details/78544505

https://www.liaoxuefeng.com/wiki/1252599548343744/1298366845681698

1. 为什么要序列化和反序列化

这个很简单,为了保存和传输Object

2. 怎么实现序列化和反序列化

让对象继承Serializable接口。类似Serializable这样的空接口被称为“标记接口”

注意:

  • transient修饰的变量不序列化和反序列化。反序列化出来的对象的这个变量是null。
  • static变量不会被序列化。反序列化出来的对象对应的字段初始化的时候是什么值他就是什么值。
  • 反序列化时,由JVM直接构造出Java对象,不调用构造方法,构造方法内部的代码,在反序列化时根本不可能执行。

3. serialVersionUID的作用

其实它就是要给版本号的概念。对象的成员变量修改了这个版本号就应该变。

我们经常能看到,在要被序列化的对象里会加上serialVersionUID。其实不加也可以,java编译器会根据你的这个对象的属性自动生成一个serialVersionUID

private static final long serialVersionUID = 1L;

但是建议最好还是加上。为什么呢?因为不同的编译器有可能生成serialVersionUID的方式不一样。导致你序列化时serialVersionUID是123456L,反序列化时其他的java编译器生成的serialVersionUID是64789L。这样反序列化时serialVersionUID对不上就会报InvalidClassException异常

4. 总结:

  • 因为Java的序列化机制可以导致一个实例能直接从byte[]数组创建,而不经过构造方法,因此,它存在一定的安全隐患。一个精心构造的byte[]数组被反序列化后可以执行特定的Java代码,从而导致严重的安全漏洞

  • 实际上,Java本身提供的基于对象的序列化和反序列化机制既存在安全性问题,也存在兼容性问题。更好的序列化方法是通过JSON这样的通用数据结构来实现,只输出基本类型(包括String)的内容,而不存储任何与代码相关的信息

  • Java的序列化机制仅适用于Java,如果需要与其它语言交换数据,必须使用通用的序列化方法,例如JSON。

相关文章

  • java专题之序列化

    一、基本概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反...

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • JAVA反序列化漏洞

    目录 反序列化漏洞序列化和反序列化JAVA WEB中的序列化和反序列化对象序列化和反序列范例JAVA中执行系统命令...

  • Java序列化

    Java序列化的几种方式以及序列化的作用 Java基础学习总结——Java对象的序列化和反序列化

  • JDK 序列化

    序列化和分序列化概念 什么是序列化和反序列化 Java序列化是指把Java对象转换为字节序列的过程,而Java反序...

  • Java序列化机制

    Java序列化机制 序列化和反序列化 Java序列化是Java内建的数据(对象)持久化机制,通过序列化可以将运行时...

  • Spark序列化

    Java序列化 有关Java对象的序列化和反序列化也算是Java基础的一部分,首先对Java序列化的机制和原理进行...

  • Protostuff序列化和反序列化

    Java序列化和反序列化 序列化和反序列化是在应对网络编程最常遇到的问题之一。序列化就是将Java Object转...

  • 序列化与反序列化

    Java基础学习总结——Java对象的序列化和反序列化 一、序列化和反序列化的概念 把对象转换为字节序列的过程称为...

  • Java 序列化

    参考链接:Java对象的序列化和反序列化Java transient关键字使用小记 1. Java序列化概念 把对...

网友评论

      本文标题:Java的序列化和反序列化

      本文链接:https://www.haomeiwen.com/subject/metlcltx.html