昨天在一个项目中,基于Netty的Socket即时通讯,java序列化的类作为协议,两边通讯,而我修改包名之后,协议失效,我不理解java序列化,整整一上午才debug出来。看来自己java差太远。
Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。
Java序列化就是把对象转换成字节序列,而Java反序列化就是把字节序列还原成Java对象。
可见,包名和类完全一致的两个类,各自序列化之后才能转换成相同的字节序列。