java 关键字 transient

  1. 关于 java 序列化
  2. java 中的 transient 关键字

关于 java 序列化

Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让我们的实体类实现Serializable接口,目的就是为了让其可序列化。

当然,序列化后的最终目的是为了反序列化,恢复成原先的Java对象,要不然序列化后干嘛呢,所以序列化后的字节序列都是可以恢复成Java对象的,这个过程就是反序列化。

java 中的 transient 关键字

简单地说,就是让某些被修饰的成员属性变量不被序列化,

那么什么情况下,一个对象的某些字段不需要被序列化呢?

如果有如下情况,可以考虑使用关键字transient修饰

1、类中的字段值可以根据其它字段推导出来;

如一个长方形类有三个属性:长度、宽度、面积(示例而已,一般不会这样设计),那么在序列化的时候,面积这个属性就没必要被序列化了;

private transient Integer area;

2、业务上没必要序列化传输的

不被序列化的好处是什么?

主要是为了节省存储空间,其它的感觉没啥好处,可能还有坏处(有些字段可能需要重新计算,初始化什么的),总的来说,利大于弊。

参考自 https://www.cnblogs.com/chenpi/p/6185773.html


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:java 关键字 transient

字数:455

本文作者:夏来风

发布时间:2020-10-18, 23:18:29

原始链接:http://www.demo1024.com/blog/java-transient/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。