根据The Java Language Specification, Java SE 8 Edition:变量如果被transient关键字修饰,那么当对这个类的实例进行持久化(Serializable)保存时,这个被修饰的变量不会被持久化。
比如有一个Point类的实例,当被持久化保存时,只有x、y会被持久化,rho、theta变量会被忽略。
class Point {
int x, y;
transient float rho, theta;
}
原文如下:
8.3.1.3 transient Fields
Variables may be marked transient to indicate that they are not part of the
persistent state of an object.
Example 8.3.1.3-1. Persistence of transient Fields
If an instance of the class Point :
class Point {
int x, y;
transient float rho, theta;
}
were saved to persistent storage by a system service, then only the fields x and y would be
saved. This specification does not specify details of such services; see the specification of
java.io.Serializable for an example of such a service.