瞬态变量有什么用?

mur*_*har 2 java serialization transient

可能重复:
为什么Java有瞬态变量?

transient关键字将用于防止特定变量的序列化.但为什么我们不应该序列化数据呢?有内在安全吗?

Joa*_*uer 14

某些类本质上不可序列化,因为它们代表管理Java环境之外的资源.例如,a FileOutputStream无法真正序列化,因为它代表一个打开的文件句柄.对于a来说也是如此Socket:您无法保存和恢复"打开套接字".

如果要序列化某个具有该类型字段的对象,则必须将这些字段标记为瞬态.

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