有些类本质上是不可序列化的,因为它们表示Manage Java环境之外的资源。例如,a
FileOutputStream不能真正序列化,因为它表示一个打开的文件句柄。对于a同样如此
Socket:您无法保存和恢复“打开的套接字”。
如果要序列化具有该类型字段的对象,则必须将这些字段标记为瞬态。
使用的另一个原因
transient是您的类进行某种内部缓存时。例如,如果您的类可以执行计算并且出于性能原因将其缓存每次计算的结果,则保存该缓存可能是不希望的(因为重新计算它可能比恢复它更快,或者因为不太可能使用旧的缓存值任何用途)。在这种情况下,您可以将缓存字段标记为瞬态。



