论坛首页 Java企业应用论坛

java中的Serializable接口到底是做什么用的?

浏览 2018 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-30   最后修改:2010-01-26
序列化是把一个对象的状态写入一个字节流的过程,它执行RMI,RMI允许一台机器上的JAVA对象调用不同机器上的JAVA对象方法,对象可以作为参数提供给那个远程方法,发送机序列化该对象并传送它,接收机执行反序列化。
序列化和反序列化的关系图表可形成包含循环引用的顺序图表。这是整个序列化的总体思想。
而Serializable接口属于支持序列化的一个接口,只有一个实现它的对象可以被序列化工具存储和回复,Serializable接口没有定义任何成员,只用来表示一个累可以被序列化,若该类可以序列化,那么它的所有子类都可以。
下面是关于序列化的一个实例:
程序名称:SerializationDemo.java
程序主题:实现对象的序列化和反序列化
程序说明:该程序由实例化一个MyClass类的对象开始,该对象有三个实例变量,类型分别为String、int、double,是希望存储和恢复的信息。




import java.io.*;



public class SerializationDemo{

        public static void main(String args[]){



//Object serialization

try{

MyClass object1=new MyClass("Hello",-7,2.7e10);

System.out.println("object1:"+object1);

FileOutputStream fos=new FileOutputStream("serial");

ObjectOutputStream oos=new ObjectOutputStream(fos);

oos.writeObject(object1);

oos.flush();

oos.close();

}

catch(Exception e){

System.out.println("Exception during serialization:"+e);

System.exit(0);

}



//Object deserialization

try{

MyClass object2;

FileInputStream fis=new FileInputStream("serial");

ObjectInputStream ois=new ObjectInputStream(fis);

object2=(MyClass)ois.readObject();

ois.close();

System.out.println("object2:"+object2);

}

catch(Exception e){

System.out.println("Exception during deserialization:"+e);

System.exit(0);

}

}

}



class MyClass implements Serializable{

String s;

int i;

double d;

public MyClass(String s,int i,double d){

this.s=s;

this.i=i;

this.d=d;

}

public String toString(){

return "s="+s+";i="+i+";d="+d;

}

}



程序运行结果:object1和object2的实例变量是一样的,输出如下:

object1:s=Hello;i=-7;d=2.7E10

object2:s=Hello;i=-7;d=2.7E10
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics