java - transient 变量有什么用?

标签 java serialization transient

<分区>

Possible Duplicate:
Why does Java have transient variables?

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

最佳答案

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

如果您想序列化某个具有该类型字段的对象,则必须将这些字段标记为 transient 。

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

关于java - transient 变量有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960280/

相关文章:

json - 使用 Jackson 进行序列化时如何仅包含特定属性

java - CDI 构造函数注入(inject)不适用于 transient 不可序列化依赖项

grails - Grails 域中的 transient 属性

c# - 如何从 [Serializable] INotifyPropertyChanged 实现者中排除不可序列化的观察者?

java - 如何在 Spring Data Mongo 中的聚合投影字段中嵌套字段

java - 如何忽略多个 JUnit 测试类?

java - 如何从 Parcelable 中正确读取可序列化?

c++ boost将char数组反序列化为obj

java - 如何将动态 SQL 列映射到 Hibernate 实体对象?

java - 如何在 JOptionPane 中设置默认输入字段