transient变量的用途是什么?

19 浏览
0 Comments

transient变量的用途是什么?

这个问题已经在这里有答案了

可能是重复的问题:

使用transient关键字将被用来防止特定变量的序列化。但是为什么我们不应该序列化数据呢?内部是否有安全性问题?

admin 更改状态以发布 2023年5月21日
0
0 Comments

是的,它可能与安全有关,但原因也可以是该字段中的数据来自其他字段,在这种情况下无需发送它。如果可以节省带宽就节省吧 🙂

0
0 Comments

有些类在本质上是不能被序列化的,因为它们代表 Java 环境外的资源。例如,FileOutputStream 不能被真正地序列化,因为它代表一个打开的文件句柄。对于 Socket,同样也是如此:无法保存和恢复“打开的套接字”。

如果你想序列化一个具有该类型字段的对象,那么你需要将这些字段标记为 transient。

使用 transient 的另一个原因是当你的类执行某种内部缓存时。例如,如果你的类可以进行计算,并且出于性能原因缓存了每个计算结果,那么保存该缓存可能是不可取的(因为重新计算可能比恢复它更快,或者因为旧的缓存值不太可能有用)。在这种情况下,你会将缓存字段标记为 transient。

0