【问题标题】:What does the keyword "transient" mean in Java? [duplicate]Java中的关键字“transient”是什么意思? [复制]
【发布时间】:2011-07-11 20:42:48
【问题描述】:

我在某处看到

transient private TrackDAO trackDAO;

【问题讨论】:

    标签: java transient


    【解决方案1】:

    Google 是你的朋友 - first hit - 你也可以先看看 serialization 是什么。

    它标记一个成员变量不是 当它被持久化到时被序列化 字节流。当一个对象是 通过网络传输, 对象需要“序列化”。 序列化转换对象 状态到串行字节。这些字节是 通过网络和对象发送 从这些字节重新创建。成员 由 java 瞬态标记的变量 关键字没有被转移,它们是 故意丢失。

    此处的示例,稍作修改(感谢@pgras):

    public class Foo implements Serializable
     {
       private String saveMe;
       private transient String dontSaveMe;
       private transient String password;
       //...
     }
    

    【讨论】:

    • @windings:在这种情况下,你真的需要启动working through tutorials。这些不能用提问来代替。 Integer 不是关键字,它是一个类。
    • 具有讽刺意味的是,这是现在谷歌上的第一个热门话题。所以...
    • 开发者是在实现可序列化的类,负责确保在序列化中排除瞬态成员,还是 Java 以某种方式这样做?
    【解决方案2】:

    表示trackDAO不应该被序列化。

    【讨论】:

    • 这是@Transient注解,不是关键字。
    • @Marcos:你在说什么?问题和答案都与transient 关键字有关。
    • 瞬态变量永远不会在 java 中序列化
    • @Joachim Sauer 实际上,我搞砸了,我与 volatile 关键字混淆了,@Transient 和 'transient' 做同样的事情。
    • @Marcos:不。我假设你在谈论javax.persistence.Transient。在这种情况下,它的作用与transient 关键字相比相似。然而,重要的区别在于 transient 关键字适用于序列化,而 @Transient 注释适用于使用 JPA 持久化对象。
    【解决方案3】:

    Java 中的瞬态变量永远不会被序列化。

    【讨论】:

      猜你喜欢
      • 2014-12-19
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2014-11-28
      • 2012-08-13
      • 2017-01-24
      相关资源
      最近更新 更多