据说Java的默认序列化机制不是非常有效率,因为a)它发现哪些字段通过反射进行写入/读取,这通常很慢b)它将额外的数据写入流.
使其更有效的一种方法是实现Externalizable及其writeExternal / readExternal方法.
这是一个问题:如果我提供’writeObject / readObject’方法,并且不要在其中调用deafiltWriteObject / defaultReadObject,那么这个机制不会使用反射来确定哪些字段要写/读,加上它不会写额外的数据流(或将会不确定).那么从效率的角度来看,上面提到的writeObject / readObject实现了Externalizable?或者后一种选择给出一些更实际的好处,前者没有?
编辑:当一个实现readObject / writeObject的Serializable类被子类化,而且子类有自己的readObject / writeObject时,它们不需要调用super的readObject / writeObject.不是如果超级/子类代替实现Externalizable.在这种情况下,需要显式调用super的writeExternal / readExternal.然而,这种差异与效率的观点无关.