为什么要序列化
把对象转化为字节序列的过程称为对象的序列化
把对象的字节序列恢复为对象的过程称为对象的反序列化
最终目的是为了对象可以跨平台存储和进行网络传输
,其方式就是IO,而IO支持的数据格式就是数组,通常的序列化方式有jdk原生,hessian,json等,大部分都是序列化成二级制数组,也就是byte[]字节数组
,JSON序列化方式生成的一串有规则的字符串
。
序列化主要有两种用途
- 把对象的字节序列存储到硬盘上
- 网络传输对象的字节序列
为什么要使用SerialversionUID
- 如果用户没有自己声明一个serialVersionUID,接口会默认生成一个
- 建议用户自己设置,因为class有改动默认的就会生成一个新的serialVersioUID,会导致反序列化失败,InvalidClassException异常
什么对象不会被序列化
- 凡是被static修饰的字段是不会被序列化
- 凡是被transient修饰的字段也是不会被序列化