transient变量的用途是什么?
- 论坛
- transient变量的用途是什么?
19 浏览
transient变量的用途是什么?
这个问题已经在这里有答案了:
可能是重复的问题:
使用transient关键字将被用来防止特定变量的序列化。但是为什么我们不应该序列化数据呢?内部是否有安全性问题?
admin 更改状态以发布 2023年5月21日
匿名的
0 Comments
有些类在本质上是不能被序列化的,因为它们代表 Java 环境外的资源。例如,FileOutputStream
不能被真正地序列化,因为它代表一个打开的文件句柄。对于 Socket
,同样也是如此:无法保存和恢复“打开的套接字”。
如果你想序列化一个具有该类型字段的对象,那么你需要将这些字段标记为 transient。
使用 transient
的另一个原因是当你的类执行某种内部缓存时。例如,如果你的类可以进行计算,并且出于性能原因缓存了每个计算结果,那么保存该缓存可能是不可取的(因为重新计算可能比恢复它更快,或者因为旧的缓存值不太可能有用)。在这种情况下,你会将缓存字段标记为 transient。