对象的序列化就是,把对象状态(属性和方法)用一串字符序列存储在文件中,多用于把这些序列放在数据库里,为了记录对象的状态,以便下一次直接拿来用。举个例子就是像我们玩游戏,像我的世界,可以把我们做过的事情保存起来,下一次登录时,便可直接在之前的基础上继续玩耍…
学习体会对象序列化的基本过程,用一个简单的对象来进行操作。
这里用到的接口是Serializable,这个接口只是为了告诉虚拟机这个类可以被序列化。
注意:若这个类里用到其他类对象,也要保证其他类对象引用了这个接口,即保证其他类也可以被序列化。
另外,如果在类中某个变量或方法不要被序列化,则用transient声明类型,则序列化时会跳过。
首先,是对象的序列化:
把对象状态(属性和方法)保存下来
import java.io.*;
public class Box implements Serializable{
private int width;
private int height;
public void setwidth(int w){
width=w;
}
public void setheightz(int h){
height=h;
}
public static void main(String[] args){
Box mybox=new Box();
mybox.setwidth(20);
mybox.setheightz(30);
try{
FileOutputStream fs =new FileOutputStream("xvliehua.ser");
ObjectOutputStream os=new ObjectOutputStream(fs);
os.writeObject(mybox);
os.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
用Notepad++查看序列化结果(写入.ser文件):
也可以写成txt,查看:
然后,对象解序列化:
提取已经保存的对象
public static void main(String[] args){
try{
FileInputStream fs =new FileInputStream("xvliehua.txt");//序列化的文件
ObjectInputStream os=new ObjectInputStream(fs);
Object one =os.readObject();//读取对象
Box mybox=(Box) one;//类型转换
os.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}