`
xiaobian
  • 浏览: 588216 次
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
http://bbs.chinaunix.net/viewthread.php?tid=395684

新手问:java中的Serializable接口到底是做什么用的?


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

[Copy to clipboard] [ - ]CODE:
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的实例变量是一样的,输出如下:

[Copy to clipboard] [ - ]CODE:
object1:s=Hello;i=-7;d=2.7E10
object2:s=Hello;i=-7;d=2.7E10

分享到:
评论

相关推荐

    Java对象Serializable接口实现详解

    Java中的Serializable接口是java.io包中定义的,用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的语义。实现了Serializable接口的类...

    java中Serializable接口作用详解

    Java 中的 Serializable 接口作用详解 Java 中的 Serializable 接口是一个非常重要的接口,它允许对象被序列化,换句话说,就是将对象转换成字节序列,以便于存储或通过网络传输。Serializable 接口的作用主要体现...

    Java_Serializable(序列化)的理解和总结

    在Java中,如果一个类实现了`Serializable`接口,那么该类的对象就可以被序列化。序列化的目的是为了能够持久地保存对象的状态,或者在网络中传递对象。 序列化主要关注的是对象的状态(即其实例变量),而不是其...

    java.io.Serializable序列化问题

    实现 `Serializable` 接口后,可以通过 `java.io.ObjectOutputStream` 将对象写入文件或通过网络传输,也可以使用 `java.io.ObjectInputStream` 从文件读取对象或将对象从网络接收。 #### 三、序列化过程 序列化的...

    可序列化接口Serializable

    在Java编程语言中,`Serializable`接口是一个非常重要的概念,它是实现对象持久化的关键。本文将深入探讨`Serializable`接口的细节,以及与其相关的高级知识。 `Serializable`接口是Java中的一个标记接口,没有包含...

    java serializable 序列化与反序列化

    `Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,它的实例就可以被序列化。 **一、Java序列化** 1. **什么是序列化**:序列化是将对象的状态(属性和成员变量)转换...

    Serializable java序列号

    在Java中,如果一个类需要支持序列化,那么该类需要实现`java.io.Serializable`接口,虽然这个接口没有定义任何方法,但是它的存在作为一个标记,表明该类的对象可以被序列化。 序列化的优点主要有以下几点: 1. **...

    java序列化(Serializable)的作用和反序列化.doc

    在Java中,通过实现`Serializable`接口,可以方便地进行对象的序列化操作。序列化的核心在于能够将对象的状态转换为可以存储或传输的形式,从而实现对象的持久化和远程通信等功能。 #### 二、序列化的应用场景 ...

    Intent传递对象Serializable

    以上就是使用Serializable接口在Intent中传递对象的基本操作和注意事项。在实际开发中,根据项目需求和性能要求,选择合适的对象传递方式是非常重要的。在提供的Android_project_Serializable项目中,你可以找到相关...

    Java API接口详述.rar

    1. `java.io.Serializable`: 使类的对象能够进行序列化,用于持久化数据或在网络中传输。 2. `java.lang.Cloneable`: 标记接口,表示对象可以被克隆。 3. `java.lang.Runnable`: 实现此接口的类可以作为线程执行的...

    Serializable接口的作用_动力节点Java学院整理

    Serializable接口的作用 在 Java 中,Serializable 接口扮演着非常重要的角色,它允许对象被序列化和反序列化,实现对象的持久化存储和网络传输。本文将详细介绍 Serializable 接口的作用和实现原理,以及它在 Java...

    学习Java接口的例题

    在实际项目中,接口常用于定义服务合同,如`java.util.Comparator`或`java.io.Serializable`。这些接口规定了对象如何与其他对象交互,而无需关心具体实现的细节。 此外,Java 8还引入了静态接口方法,它们属于接口...

    轉Serializable至Stream

    在Java编程中,`Serializable`接口是用于对象序列化的重要工具。对象序列化是指将一个对象的状态转换为字节流的过程,以便存储或通过网络进行传输。另一方面,`Stream`通常指的是I/O流,它是Java处理输入/输出数据的...

    Java 串行化(序列化)Serializable/Externalizable

    在 serializable-prj 项目中,可能包含了各种示例代码,展示了如何在Java中实现和使用序列化功能。 综上所述,Java的序列化和外部化是实现对象持久化和跨进程通信的关键技术。理解并熟练掌握这些概念,能够帮助...

    java 中序列化NotSerializableException问题解决办法

    NotSerializableException 是 Java 中的一个异常,它发生在尝试序列化一个不implement Serializable 接口的对象时。今天,我们将讨论 Java 中序列化 NotSerializableException 问题的解决办法。 问题描述 --------...

    java中把对象转化为byte数组的方法.doc

    Java 提供了两种方式来实现序列化:一种是使用 Serializable 接口,另一种是使用 Externalizable 接口。 在上面的代码中,我们可以看到, ByteToObject 方法将 byte 数组转化为对象,而 ObjectToByte 方法将对象...

    析Android中的Serializable序列化.rar_Serializable _android

    在Android开发中,Serializable接口是实现对象序列化的重要方式,它是Java平台标准的一部分,但在Android环境中也有广泛的应用。本文将深入探讨Android中的Serializable序列化机制,包括其原理、使用场景以及注意...

    序列化 serializable demo

    首先,`Serializable`接口是Java中用于实现序列化的标志接口。它没有定义任何方法,但当一个类实现了这个接口,Java的ObjectOutputStream就可以将该类的对象写入到流中。例如,`MySerializable.java`和`Product.java...

    JAVA常用API文档 中文完整版.zip

    Serializable接口则用于对象的序列化和反序列化。 2. **集合框架**:包括List、Set、Map等接口以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们提供了数据存储和操作的各种方式,如添加、删除、查找和...

Global site tag (gtag.js) - Google Analytics