您的位置:首页 > 编程语言 > Java开发

Java中的transient关键字

2013-03-18 17:56 387 查看
Java中的transient关键字用于声明当需要持久化变量时,有transient关键字修饰的变量无需持久化。如当需要序列化一个java对象时,该对象中的有transient修饰的field无需持久化,如下述代码所示:

public class TransientTest implements Serializable {
private static final long serialVersionUID = -6317993139178374949L;
private String username;
private transient String passwd;
public TransientTest(){
username= Thread.currentThread().getName();
passwd ="123456";
}
public String toString(){
if(passwd == null){
passwd ="not set";
}
return new String("UserName: " + username +"; Passwd: " +passwd);
}
public static void main(String[] args) {
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("logFile.txt"));
TransientTest transientObj =new TransientTest();
System.out.println(transientObj);
oos.writeObject(transientObj);
oos.close();
ObjectInputStream ois =new ObjectInputStream(new FileInputStream("logFile.txt"));
transientObj = (TransientTest) ois.readObject();
System.out.println(transientObj);
} catch (Exception e) {
e.printStackTrace();
}
}
}


上述代码的运行结果为:

UserName: main; Passwd: 123456
UserName: main; Passwd: not set

所以,Passwd并没有被持久化,而且当从磁盘中读取TransientTest类的实例时,并没有调用该类的默认构造器,而是直接将磁盘中的内容填充到该类实例中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: