为什么必须要实现Serializable接口?
点开该接口的源码,我们可以发现,这是一个空的接口,即没有任何的定义,那么它是怎么使用的呢?...序列化和反序列化的匹配是怎么匹配的?总不能随便来的吧,A类序列化后的二进制文件,B类能从哪里读出一个对象来嘛?
不能,类的路径以及功能代码必须完全相同,而序列化ID也是用来补充这一判断的....静态变量的序列化
我在上面的代码中,定义了一个静态变量,他也能被序列化吗?
在序列化之后,对静态变量重新赋值,那么两次打印的值相等吗?
打印结果是:
10
250
为什么呢?...这个问题其实比较简单,静态变量是属于类的,而我们是序列化了对象,因此不包含类的静态变量是正常的.
transient 关键字
transient 关键字用于在序列化时,忽略某一个字段,在反序列化后该字段为初始值...中进行了检查,不属于那四个类就会抛异常且不允许序列化.
3.序列化ID可以起到验证是不是同一个类的作用,当然是在两个类的代码完全一样的基础上.
4.transient关键字可以忽略一些字段,使其不参与序列化