序列化与反序列化应用非常广泛。
一个类对象要能被序列化或反序列化,必须自身实现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()返回空数组。
但是序列化接口对子类都起作用的