【问题标题】:Why do we serialize java class and declaring a variable static won't serialize it?为什么我们序列化 java 类并且声明一个变量 static 不会序列化它?
【发布时间】:2017-02-06 10:13:19
【问题描述】:

像 Logger 这样的静态类不会被序列化。为什么 ?

【问题讨论】:

  • 不知道你在问什么。如果您想确保某个字段没有被序列化,请使用 transient 关键字。
  • 如果你序列化一个类的实例,静态字段不会被序列化,因为它不是实例的一部分。你说的是这个吗?
  • static 字段不是实例的一部分。

标签: java serialization static


【解决方案1】:

当您将一个类标记为Serializable 时,您是在请求Java 运行时序列化您的类的objectinstance。这有助于将对象中的数据转换为可持久化的格式以存储或通过 strean 发送。

另一方面,static 成员不属于任何类,也不属于序列化的范围。因此,标记您的班级Serializable 不会影响您班级的任何static 成员。

当你反序列化一个对象时,它的所有 Class 的 static 成员将在加载该类时在另一个 JVM 中初始化。所以将静态字段数据作为序列化对象的一部分发送是没有意义的。

更多详情请见this article

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 2012-09-01
    • 1970-01-01
    • 2013-04-21
    • 2013-05-26
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多