Java:静态瞬态字段

pyt*_*ude 44 java serialization static field transient

我刚刚在Java中发现你可以声明一个字段'静态瞬态' - 编译器不会抱怨.这似乎没有任何用处,因为静态字段没有被序列化,我们都知道.

但我想知道,实际上是否存在"静态瞬态"字段有用的情况?

Pet*_*r C 17

不 - 你自己说,静态字段不是序列化的.

有点奇怪,编译器允许你这样做.

  • 它们不是由内置的Java序列化程序序列化的.但是,其他序列化程序的行为可能不同. (19认同)
  • @Peter,顺便说一下serialVersionUID会是一个例外. (4认同)
  • 即使使用另一个序列化器,保存静态字段的重点是......? (3认同)

MC *_*ror 11

在大多数情况下,它没用.静态字段确实没有被默认的序列化程序序列化.

但是,static transient可以通过反射检测字段.如果有人编写自己的序列化程序并且他还希望序列化静态字段,那么他可能会考虑transient关键字并跳过该特定字段的序列化.

PS:这个答案是为了完整起见而发布的,是基于Peter Lawrey的评论.给他的信用.