日期:2014-05-20  浏览次数:20634 次

[20分高效结贴]关于Serializable序列化的疑惑
在网上看到有人说
=========================Part A=================================
1.序列化即是把对象写到流里面的过程;
  ByteArrayOutputStream baos = new ByteArrayOutputStream();//字节输出流内存中
  ObjectOutputStream oos = new ObjectOutputStream(baos);//序列化字节流
  oos.writeObject(this);
2.反序列化即是把对象从流中读取出来的过程;
  ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());//字节输入流内存中
  ObjectInputStream ois = new ObjectInputStream(bais);//序列化字节流
  ois.readObject();//反序列化
=======================End part A==============================
前提:

=======================Part B==================================
  class A implements Serializable
  {
  //该变量时为了反序列化时候防止之前对象中的域发生过改变而导致异常
  private static final long serialVersionUID = 3969438177161438988L;
  };
=======================End Part B================================

疑问:
如果在代码中没有实现Part A部分,只有Part B部分那么还能称之为序列化了吗?

------解决方案--------------------
可以吧!
------解决方案--------------------
你没搞明白什么是序列化...
序列化是把类信息"序列"为字节数据,写到永久存储器上的动作

所以你说的,只有PART B,哪来的序列化那
一个类implements Serializable仅仅是说明,这个类可以被序列化,反之,没有Serializable申明的是不能序列化的(继承的Serializable也可以)
Serializable接口你可以看下源代码,这个接口不实现任何东西,是一个空白的接口,仅仅用来做标识

ObjectStream用来读写序列化文件

简单的说,游戏玩过吗?
游戏进度需要自己保存下来,下次玩的时候可以LOAD,不然的话一关机进度就木有了
SAVE/LOAD就是一种序列化