Java中的关键字“transient”是啥意思? [复制]

Posted

技术标签:

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

我在某处看到

transient private TrackDAO trackDAO;

【问题讨论】:

【参考方案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 中的瞬态变量永远不会被序列化。

【讨论】:

以上是关于Java中的关键字“transient”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

java 中的修饰符transient是啥意识他的原理是啥?

java 方法中含有 transient 是啥意思?

Java中transient关键字

transient-java 关键字

Java中transient关键字的详细总结

Java中transient关键字的详细总结