关键词"瞬态"在Java中意味着什么?

179 java transient

我在某处看到了


transient private TrackDAO trackDAO;

sch*_*der 256

谷歌是你的朋友 - 第一次点击 - 你也可能先看看序列化是什么.

它标记了一个成员变量,当它被持久化为字节流时不被序列化.当通过网络传输对象时,该对象需要"序列化".序列化将对象状态转换为串行字节.这些字节通过网络发送,并从这些字节重新创建对象.由java transient关键字标记的成员变量不会被转移,它们会被故意丢失.

从那里的例子,稍加修改(感谢@pgras):

public class Foo implements Serializable
 {
   private String saveMe;
   private transient String dontSaveMe;
   private transient String password;
   //...
 }
Run Code Online (Sandbox Code Playgroud)

  • 具有讽刺意味的是,这是谷歌的第一次打击.所以...... (214认同)
  • @windings:在这种情况下,你真的需要开始[通过教程](http://download.oracle.com/javase/tutorial/).这些不能通过提问来取代.`Integer`不是关键字,它是一个类. (5认同)

Dee*_*pak 30

Java中的瞬态变量从不被序列化.


Eri*_*rik 10

这意味着trackDAO不应该序列化.

  • @Marcos:没有.我假设你在谈论`javax.persistence.Transient`.在那种情况下,它会比`transient`关键字做类似*的事情.然而,**重要的**差异是`transient`关键字适用于序列化,而`@Transient`注释适用于使用JPA持久化对象. (14认同)
  • @Marcos:你在说什么?问题和答案都是关于`transient`关键字. (4认同)
  • 这是@Transient 注释,而不是关键字。 (2认同)