关于序列化与反序列化

序列化与反序列化应用非常广泛。

一个类对象要能被序列化或反序列化,必须自身实现java.io.Serializable接口或者继承一个已经实现java.io.Serializable接口的类。

反序列化时,从反序列化对象开始一直到实现序列化接口的类为止的这个继承体系的构造函数都不会被调用,而再往上的没有实现序列化接口的类会调用其构造函数。

如下列:

Class GrandFather

Class Father extends GrandFather implements Serializable

Class Son extends Father

Class GrandSon extends Son

GrandFather对象不能序列化因为没有实现Serializable接口

GrandSon Son Father都可以序列化

GrandSon Son Father在反序列化的时候其构造函数不会被调用,但是GrandFather的构造器被调用。
 

接口实现不能被继承,如B实现A接口,C继承B,那么C.class.getInterfaces()返回空数组。

但是序列化接口对子类都起作用的

 

原文地址:https://www.cnblogs.com/xinglongbing/p/2248972.html