import java.io.Serializable;
public class entity implements Serializable {
private String name;
private int age;
private String sex;
private transient String tra;
public String getTra() {
return tra;
}
public void setTra(String tra) {
this.tra = tra;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public entity(){};
public entity(String name,int age ,String sex,String tra){
this.name=name;
this.age=age;
this.sex=sex;
this.tra=tra;
};
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class serialise {
/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
entity en=new entity("zhangsan",34,"男","trasiren");
try {
FileOutputStream out=new FileOutputStream(new File("date.ser"));
ObjectOutputStream os=new ObjectOutputStream(out);
os.writeObject(en);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileInputStream fi=new FileInputStream(new File("date.ser"));
ObjectInputStream oi=new ObjectInputStream(fi);
entity en2=(entity)oi.readObject();
oi.close();
System.out.println(en2.getName()+"\n"+en2.getAge()+"\n"+en2.getSex()+"\n"+en2.getTra());
}
}
注意事项
1.该对象必须实现serialitable 接口
2.该对象的串行化成员必须是非静态成员变量,即不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符,都不能保存。而对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的,例如一个Thread对象,或一个FileInputStream对象,对于这些字段,我们必须用transient关键字标明 。
3、要串行化一个对象,必须与一定的对象输入/输出流联系起来,通过对象输出流将对象状态保存下来,再通过对象输入流将对象状态恢复。