import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
public class SirializableTest implements Serializable {
private String name;
private transient String password;
public SirializableTest(String name, String password) {
this.name = name;
this.password = password;
}
@Override
public String toString() {
return "name: " + name + ",password: " + password;
}
public static void main(String args[]) {
try {
File f = new File("c:\\a.obj");
if(!f.exists()) {
f.createNewFile();
}
//序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
out.writeObject("HelloWorld!");
out.writeObject(new Date());
out.writeObject(new SirializableTest("yang.ug","root07yxb"));
out.close();
//反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
System.out.println(in.readObject());
System.out.println(in.readObject());
System.out.println(in.readObject());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。