java的序列化

若是要让类可以被序列化,就实现Serializable接口。this

简单例子:spa

public class Dog implements Serializable{
//若是某实例变量不能或不该该被序列化,就把它标记为transient的。当经过被还原序列化的类获得它时,其值会为null。当去掉该标记获得的name仍是原来的。
 transient String name;


public Dog(String name) {
super();
this.name = name;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


}
对象

public class Test1 {
public static void main(String[] args) {
try {
FileOutputStream fileOutputStream=new FileOutputStream("game.ser");
ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(new Dog("lele"));
System.out.println("写入成功");
FileInputStream fileInputStream=new FileInputStream("game.ser");
ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);
Dog dog=(Dog) objectInputStream.readObject();
System.out.println("读取结果:");
System.out.println("dog name is"+dog.getName());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
接口

对象的序列化:get

1.你能够经过序列化来存储对象的状态。it

2.使用ObjectOutputStream来序列化对象io

3.用fileoutputstream连接objectoutputStream来将对象序列化到文件上。class

4.对象必须实现序列化接口才能被序列化。若是付烈实现了序列化,则子类也就自动地有实现,而无论是否有明确的声明。stream

5.除非该实例变量被标记为transient不然,该变量被还原的时候会被赋予为null或primitive住数据类型的默认值。变量

6.读取对象的顺序必须与写入对象的顺序相同。

7.静态变量不会被实例化。由于全部的对象都是哦你共享同一份静态变量值。

相关文章
相关标签/搜索