类的序列化

序列化的目的:为了能够保存对象

序列化的实质:将类通过流的形式存放到文件中。

1、创建出FIleOutputStream

FileOutputStream fileStream = new FileOutputStream("MyGame.ser");//FileOutputStream有写字节的方法,可以写入文件

2、创建出ObjectOutputStream

ObjectOutputStream os = new ObjectOutputStream(fileStream);//但我们一般不直接写字节,会先用 ObjectOutputStream 来把对象打包,再写入文件 

3、调用writeObject方法来打包并写入文件

os.writeObject(characterOne);
os.writeObject(characterTwo);
os.writeObject(characterThree);

4、关闭ObjectOutputStream

os.close();

类能够被序列化的条件:

实现Serializable接口,该接口又被称为maker或tag类的标记用接口,因为此接口没有任何方法需要实现。它的的唯一目的就是声明实现这个接口的类是可以被序列化的。也就是说此类型的对象可以通过序列化来存储。如果某类是可序列化的,则它的子类也自动的可以序列化。

序列化对象时实际上保存了对象的什么东西?

答:对象的状态,即实例变量的值。就是这些值让同一类的不同实例有不同的意义。

注:序列化必须时全有或者全无的,即序列化时必须保证类内部的所有实例变量全部被序列化。如果某个实例变量不能或者不应该被序列化,就把它标记为transient(暂时的);

解序列化:将文件还原成活生生的对象。

1、创建FileInputStream

FileInputStream fileStream = new FIleInputStream(MyGame.ser);

2、创建ObjectInputStream

ObjectInputStream os = new ObjectInputStream(fileStream);

3、读取对象

Object one = new os.readObject();
Object two = new os.readObject();
Object three = new os.readObject();

4、转换对象类型

GameCharacter elf = (GameCharacter)one;//返回的Object类型,必须转换类型
GameCharacter troll = (GameCharacter)two;
GameCharacter mag = (GameCharacter) three;

5、关闭ObjectInputStream

os.close();//FileInputStream会跟着关掉
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值