java序列化知识点总结

1、定义:序列化 (Serialization)是将对象的转换为可以存储或传输的形式的过程。简单的说,就是把对象转换成字节序列的过程。
2、目的:A、把对象的字节序列永久地保存在临时或持久性存储区(硬盘和数据库)B、在网络上传输对象的字节序列
3、权限和安全:A、代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Intranet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。
B、对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化和在网络中传输。
4、实现和例外:A、实现Serializable接口,而没有其它任何处理的话,则就是使用默认序列化机制。使用默认机制,在序列化对象时,不仅会序列化当前对象本身,还会对该对象引用的其它对象也进行序列化,同样地,这些其它对象引用的另外对象也将被序列化,以此类推。所以,如果一个对象包含的成员变量是容器类对象,而这些容器所含有的元素也是容器类对象,那么这个序列化的过程就会较复杂,开销也较大。B、实现Externalizable接口,自己实现writeExternal和readExternal方法。C、对象实例的所有字段都会被序列化,static和transient关键字修饰的字段除外。
5、serialVersionUID的作用:显式的指定这个版本号以后,实现了Serialization接口的类可以随意修改而不必担心反序列化过程中由编译器随机指定类版本号而导致的java.io.InvalidClassException。

猜你喜欢

转载自it-yang4future.iteye.com/blog/2276750
今日推荐