1,把对象转换为字节序列的过程称为对象的序列化。
2,如果你的对象需要网络传输或者持久化(对象直接转换为字节的形式传输),那么就需要实现Serializable接口。比如远程方法调RPC (Remote Procedure Call) 则接口参数就一定要实现Serializable接口;如果只是转换为json字符串的形式与网络打交道,那么就不需要实现Serializable接口。
3,为了防止反序列失败,该对象需提供一个默认的serialVersionUID(该值在反序列化的时候会进行校验,如果校验失败会抛异常-InvalidClassException)。

什么时候不要序列化
在Java进行应用开发的时候,用户的个人信息,包括密码、电话号码、具体住址这些隐私信息的时候,就需要防止对象被序列化,如果被序列化用于网络传输,则很有可能会造成安全问题。
Java中如何防止序列化
在Java中,声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态,transient代表对象的临时数据。
所以在字段的前面,加上transient关键字,就可以防止该字段被用于序列化;

注意:
java中的序列化机制能够将一个实例对象(只序列化对象的属性值,而不会去序列化什么所谓的方法。)的状态信息写入到一个字节流中使其可以通过socket进行传输、或者持久化到存储数据库或文件系统中;然后在需 要的时候通过字节流中的信息来重构一个相同的对象

对象序列化是将对象转换为字节序列的过程,常用于网络传输和持久化。实现Serializable接口是对象在网络中传输的前提,例如在RPC调用中。为了防止反序列化失败,需要定义serialVersionUID。然而,对于包含敏感信息的对象,如用户个人信息,应避免序列化以防止安全风险。在Java中,使用transient关键字可以阻止字段被序列化。文章还提到了Java序列化的其他形式。
最低0.47元/天 解锁文章
171万+

被折叠的 条评论
为什么被折叠?



