【问题标题】:in Java does transient ignore variable or value? [duplicate]在 Java 中是否瞬态忽略变量或值? [复制]
【发布时间】:2014-01-29 07:09:18
【问题描述】:

Java 课程作业:

当一个变量被放入瞬态时,序列化将忽略该变量或仅忽略该变量的值。

测试一下。

我该如何测试?

【问题讨论】:

  • 用这个属性创建一个类,通过保存它来序列化它,例如到磁盘。
  • 这个问题毫无意义。序列化与对象内变量的值有关。该值是可序列化的,该变量仅在运行时存在。将变量标记为transient 会停止对其值进行序列化。反序列化时,变量仍然存在,只是设置为其默认值。

标签: java


【解决方案1】:

如果一个变量被声明为瞬态,它将不会被序列化(不作为对象的状态存储在字节流中)。

在反序列化时,它将获得默认值。

【讨论】:

    【解决方案2】:

    执行以下操作:

    public class Test1 implements Serializable {
        private long longValue;
    }
    
    public class Test2 implements Serializable {
        private long longValue;
        private transient int intvalue;
    }
    

    现在将每个实例序列化到磁盘,如果大小相同,那么你知道瞬态变量根本没有序列化,否则......

    【讨论】:

      【解决方案3】:

      如果您不想序列化变量,请将其声明为transient。 序列化意味着保存变量的状态。 see here 详细示例。

      【讨论】:

      • @down voter 没找到你??
      • 我不是投反对票的人,但你明白了吗?
      • 是的,这就是我所理解的。
      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 2020-12-05
      • 2022-01-06
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2020-07-06
      • 2020-10-28
      相关资源
      最近更新 更多