Serializable
类型:为标记性接口
所谓的标记性接口如下图所示:
里面什么没有,则这样的接口称为标记性接口
作用:序列化信息
序列化:将对象的数据写入到文件中。
反序列化:将文件中对象的数据读取出来。
注意:
不实现此接口的类将不会使任何状态序列化或者反序列化。
代码演示
/**
没有继承序列化接口
**/
public class SerializableTest {
public static void main(String[] args) throws Exception {
//序列化
SerializableTest serializableTest = new SerializableTest();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Desktop\\export\\serializableTest.txt"));
oos.writeObject(serializableTest);
oos.close();
//反序列化
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("C:\\Desktop\\export\\serializableTest.txt"));
Object o = objectInputStream.readObject();
objectInputStream.close();
}
}
没有继承序列化接口进行将对象进行 到12行 把对象写到文件中去的时候就出问题了(提示序列化异常)
正确写法: 运行通过
public class SerializableTest implements Serializable{
public static void main(String[] args) throws Exception {
//序列化
SerializableTest serializableTest = new SerializableTest();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\C00979\\Desktop\\export\\serializableTest.txt"));
oos.writeObject(serializableTest);
oos.close();
//反序列化
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("C:\\Users\\C00979\\Desktop\\export\\serializableTest.txt"));
Object o = objectInputStream.readObject();
objectInputStream.close();
}
}
总结:
序列化可以想象成对象进行读写操作的一种特殊约定,若没有这层约定则会出现问题
(数据持久层与数据库进行交互的对象存在序列化的问题)