transient 報錯
英 ['trnznt] 美 ['trnzrnt] 全球發音 跟讀 口語練習
adj. 短暫的;路過的
n. 瞬變現象;過往旅客;候鳥
java語言的關鍵字,變量修飾符,如果用transient聲明一個實例變量,當對象存儲時,它的值不需要維持。
作用
Java的serialization提供了一種持久化對象實例的機制。當持久化對象時,可能有一個特殊的對象數據成員,我們不想用serialization機制來保存它。爲了在一個特定對象的一個域上關閉serialization,可以在這個域前加上關鍵字transient。當一個對象被序列化的時候,transient型變量的值不包括在序列化的表示中,然而非transient型的變量是被包括進去的。
transient說明一個屬性是臨時的,不會被序列化。
下面是一個Demo,name聲明爲 transient,不被序列化 。這個在C#裏面是特性[ignore]而不是關鍵字。
package com.zzs.tet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class TransientDemo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private transient String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// TODO Auto-generated method stub
String path="D:"+File.separator+"object.txt";
File file=new File(path);
TransientDemo transientDemo=new TransientDemo();
transientDemo.setName("姓名");
transientDemo.setPassword("密碼");
ObjectOutput output=new ObjectOutputStream(new FileOutputStream(file));
output.writeObject(transientDemo);
ObjectInput input=new ObjectInputStream(new FileInputStream(file));
TransientDemo demo=( TransientDemo )input.readObject();
System.out.println(demo.getName()+demo.getPassword());
}
}
輸出結果:
null密碼