implements Serializable
implements Serializable
1. 序列化和反序列化
序列化: 把对象转换为字节序列的过程称为对象的序列化.
反序列化: 把字节序列恢复为对象的过程称为对象的反序列化.
- 在Java和其他语言进行通信的时候, 需要将对象转化成一种通用的格式例如Json( 转换成大家都认识的对象 ), 从对象都Json字符串的转换就是序列化的过程, 反过来, 从Json字符串转换成Java对象就是反序列化的过程.
- 在Java需要把一个对象的状态保存到文件或者是数据库的时候, 就是数据存取的过程中的中间过程.
2. 为什么要显示声明serialVersionUID
serialVersionUID 的作用是验证序列化和反序列化的过程中, 对象是否保持一致. 所以在一般情况下我们需要显示的声明serialVersionUID. 如果接受者加载的该对象的类的serialVersionUID
和发送者的类版本号不同的话, 反序列化会爆出InvalidClassException错误.
什么时候会导致爆出这个错误呢? 例如在没有显示声明版本号的时候, 先将对象进行了序列化; 然后不管出于什么目的, 该对象的类被修改了, 哪怕仅仅是添加了一个强制转换, 或者将一个public的属性给私有化了, 都会影响版本号. 此时在这个环境下用反序列化的方法读取以前序列化之后存储起来的对象是会报错的.
3. 为什么序列化值不用1L
记得很久以前看的资料, 现在在网上找没找到可以参考的. 下面写的东西 是我自己以前看到的, 并且自认为正确的.
serialVersionUID是根据类名,接口名,方法名,成员属性以及他们的修饰符生成的唯一ID, 在反序列化的时候会使用ID作为一个判断条件去寻找并验证类, 如果serialVersionUID都是一样的1L的话会降低反序列化的速度.
implements Serializable的更多相关文章
- 为什么很多类甚者底层源码要implements Serializable ?
为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的ja ...
- javaBean为什么要implements Serializable
转自:https://www.cnblogs.com/jqlbj/p/6261592.html 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序 ...
- implements Serializable有什么作用?
没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用.serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序 ...
- java 输入输出 对象序列化implements Serializable与反序列化:ObjectOutputStream.writeObject() ;objectInputStream.readObject() ;serialVersionUID字段注意
对象序列化 对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象.对象序列化机制允许把内存中的 Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将 ...
- implements Serializable有什么作用
转自 http://blog.csdn.net/dinghqalex/article/details/46009911
- java.io.Serializable 序列化接口
什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是 ...
- serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法
ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...
- Java Serializable系列化与反系列化
[引言] 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接 ...
- 在Activity之间传递参数(三)——serializable和parcelable的区别
传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...
随机推荐
- 7种你应该知道的JavaScript常见的错误
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/types-of-native-errors-in- ...
- 内网渗透之权限维持 - MSF
年初九 天公生 0x034 MSF(美少妇) 启动msf msfconsole 先启动msf依赖的postgresql数据库 初始化数据库 msfdb init (要用普通用户) msf路径 /usr ...
- Ansible-免密登录与主机清单Inventory
Ansible的指定用户与密码登录.免密登录.指定ssh端口以及主机清单Inventory配置 在实际使用中并不需要对ansible配置进行修改,或者说只有需要的时候才修改ansible配置. 添加用 ...
- Django中使用CORS实现跨域请求
跨域请求: 请求url包含协议.网址.端口,任何一种不同都是跨域请求. 1.安装cors模块 pip install django-cors-headers2.添加应用 INSTALLED_ ...
- js 图片实现无缝滚动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 安卓手机tcpdump的使用
一.常规操作步骤 1. 手机要有root权限 2. 下载tcpdump http://www.strazzere.com/android/tcpdump 3. adb push c:\wherever ...
- [Alg] 文本匹配-单模匹配与多模匹配
实际场景: 网站的用户发了一些帖子S1, S2,...,网站就要审核一下这些帖子里有没有敏感词. 1. 如果网站想查一下帖子里有没有一个敏感词P,这个文本匹配要怎么做更快? 2. 如果网站想查一下帖子 ...
- JVM收集器简介
JVM GC收集器集合:
- 一文讲清楚MySQL事务隔离级别和实现原理,开发人员必备知识点
经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...
- P5021 赛道修建 题解
原题链接 简要题意: 在一棵树上求 \(m\) 条不相交的路径的最小值的最大值. 本题部分分很多,而且本人也交了 \(27\) 次,所以一定要仔细讲部分分! 算法一 对于 \(b_i = a_i + ...