序列化条件
- Person类需要满足如下要求,方可序列化
1.需要实现接口:Serializable
2.当前类提供一个全局变量 serialVersionUID
3.当前Person类需要实现Serializable接口之外,还必须保证其内部所有属性必须是可序列化的(默认情况下:基本数据类型可序列化)
4.不能序列化Static 和transient修饰的成员变量
public class Person implements Serializable {
private static final long serialVersionUID = -6849794470754667710L;
private String name;
private int age;
private int id;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", id=" + id +
'}';
}
public Person(){
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
序列化过程
内存中的java对象保存到磁盘中或网络中传输出去
使用objectoutputStream实现
public static void main(String[] args) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream("Object.dat"));
oos.writeObject(new String("我爱天安门广场"));
oos.flush();//刷新
oos.writeObject(new Person("万",23));
oos.flush();//刷新
} catch (IOException e) {
e.printStackTrace();
}finally {
if(oos!= null){
try{
oos.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
反序列化
将磁盘文件中的对象还原为内存中的一个java对象
public static void main(String[] args) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("Object.dat"));
Object obj =ois.readObject();
String str =(String)obj;
Person p = ( Person)ois.readObject();
System.out.println(str);
System.out.println(p);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public class Person implements Serializable {
private static final long serialVersionUID = -6849794470754667710L;
private String name;
private int age;
private int id;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", id=" + id +
'}';
}
public Person(){
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}