我们知道Serializable接口里面没有任何方法 但一个类实现了这个接口 就能序列化 我想问下 Serializable接口里面没有任何方法 它是怎么序列化的 由它的子类完成? 但它的子类跟我写的实体类没有任何关系啊 难道实现了接口 就能和接口的实现类相关联 Serializable接口里面没有方法 就不能完成多态 越想脑壳越昏 谁来解答一下小弟的疑惑
调试欢乐多
可以为程序提供对对象图形的持久性存储。
其优点是:即使程序运行结束,对象仍然可以保存下来。必须实现Serializable接口。
一个类想实现序列化,必须实现Serializable接口。
若某个属性不要求进行序列化,则使用关键字transient
class Person implements Serializable{
private String name;
//private int age;
private transient int age;
public Person(String name ,int age){
this.name = name;
this.age=age;
}public String toString(){
return this.name+" "+this.age;
}
}public class SerializableTest{
public static void main(String args[])throws Exception{
Person p = new Person("lilei",23);
ObjectOutputStream oos = null;
//开始序列化
oos = new ObjectOutputStream(new FileOutputStream(new File("D:\\myTest.txt")));
oos.writeObject(p);
//反序列化
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:\\myTest.txt")));
Person p1 = (Person)ois.readObject();
System.out.println(p1);
ois.close();
oos.close();}
}
不是所有接口都必须有成员方法的。
比如Servlet,如果实现了SingleThread的话,web服务器就对客户的每次请求都创建一次该Servlet的实例,请求结束后销毁(perl的cgi程序就是如此)。否则,所有请求都用同一个Servlet的实例。
只是个标识
好比给你开着120救护车 管你车里坐的什么人
一样都可以飙车闯红灯了java就任这个标识 当你是120了 所以放行
throw new XxxxxXxxxException();
}只是人为地检查一下,标记这个类属于可序列化的类。