transient说明一个属性是临时的,不会被序列化。详看事例:
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 TestAnimal implements Serializable{
private static final long serialVersionUID = 1L;
private transient String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static void main(String[] args) {
String path = "D:" + File.separator + "data.txt";
File file = new File(path);
TestAnimal ta = new TestAnimal();
ta.setUsername("张三");
ta.setPassword("李四");
try {
ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file));
oo.writeObject(ta);
ObjectInput oi = new ObjectInputStream(new FileInputStream(file));
TestAnimal tt = (TestAnimal)oi.readObject();
System.out.println(tt.getUsername()+tt.getPassword());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
null李四