学习笔记:Java中的transient

改bug,发现一个保留字transient。很奇怪,从来没见过,也从来没用过。
用google查了一把,大概意思是: Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。还是不大明白。
后来,终于搜到这篇文章,写得很详细。 Be Careful With Transient Data
怕万一这篇文章链接失效,收藏起来。 Be Careful With Transient Data

终于明白了。
当串行化某个对象时,如果该对象的某个变量是transient,那么这个变量不会被串行化进去。也就是说,假设某个类的成员变量是transient,那么当通过 ObjectOutputStream把这个类的某个实例保存到磁盘上时,实际上transient变量的值是不会保存的。因为当从磁盘中读出这个对象的时候,对象的该变量会没有被赋值。
另外这篇文章还提到,当从磁盘中读出某个类的实例时,实际上并不会执行这个类的构造函数,而是读取这个类的实例的状态,并且把这个状态付给这个类的对象。这点我以前似乎不知道。

你可能感兴趣的:(java,Google)