Serializable接口

Serializable为标志性接口,当编译器看到对象实现了此接口,就表明此对象需要被序列化。

什么叫序列化:把一个Object直接转换成字节流写到硬盘上,或者写到网络上。

直接写Object的初衷:

当我们要磁盘中保存一个对象的时候,需要把对象的属性记录下来,比如一个正方形:长,宽,颜色,线条等属性,然后把这些属性值保存下来,

为什么不直接把对象保存下来,直接转化为字节流写到硬盘或者网络上

举例如下:

public class TestObjectIO {
   public static void main(String args[]) throws Exception {
      T t = new T();
      t.k = 8;
      FileOutputStream fos = new FileOutputStream("d:/share/java/io/testobjectio.dat");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(t);
      oos.flush();
      oos.close();
  
      FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio.dat");
      ObjectInputStream ois = new ObjectInputStream(fis);
      T tReaded = (T)ois.readObject();
      System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);
   }
}

class T implements Serializable
{
       int i = 10;
   int j = 9;
   double d = 2.3;
   transient int k = 15;
}

transient修饰的成员变量在序列化的时候不予考虑,网硬盘上写的时候,这个值不考虑,读出的时候就是默认的值,如上面的程序K的值开始时是15,读出的时候是0

原文地址:https://www.cnblogs.com/zhangkefan/p/4818422.html