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”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章