`
微Smile
  • 浏览: 34877 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

用ObjectOutputStream流传递对象遇到的问题

    博客分类:
  • java
 
阅读更多

ObjectOutputStream是对象序列化的类

 

确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象
随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以
有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,
可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些
保存下来的对象。这种情况下就要用到对象的序列化

 

假如有个很细的管子,一块肉和一本书,你想把肉和书从管子的一边传到另一边。
1,传肉的话要把肉切碎了传,到管子的另一边就成肉馅了。这个是不可被序列化的结果。
2,传书的话可以把书一页一页的撕下来卷成纸筒传过去,都传完之后按照页数排列好订在一起。这个是可被序列化的结果。

 

序列化,就是将内存中的对象保存到磁盘上 或者 在IO流中传输。

 

序列化一般用于网络传输。因为网络传输不是对象放进方法里,网络传输只能通过字节流,不能直接传输对象,对象被从一段传输到另外一端,然后进行反序列化,还原成发送端的状态

 

序列化就像是给对象编了个号,对应的反序列化就是根据这个编号还原对象。主要用于不同机器间传送或存到硬盘或数据库中。 反序列化就是根据serialVersionUID来还原对象,这也是为什么serialVersionUID为什么那么长,主要是为了保持唯一性。 如果没有序列化,你想想另外一台机器怎么还原呢

 

 

之所以需要对象序列化的目的,是因为有时候对象需要在网络上传输,传输的时候需要这种序列化处理,从服务器硬盘上把序列化的对象取出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理

分享到:
评论

相关推荐

    使用Socket传递对象

    "使用Socket传递对象"这一主题涉及到Java的序列化机制、网络I/O以及对象的传输。让我们深入探讨一下这个主题。 首先,Java Socket是TCP/IP协议栈的Java实现,允许两台计算机之间的应用程序进行双向通信。在客户端-...

    通过socket传递java对象(对象序列化)

    当涉及到通过Socket传递Java对象时,我们面临一个问题:网络传输只能处理字节流,而Java对象不能直接转换为字节。为了解决这个问题,Java引入了对象序列化(Object Serialization)机制。对象序列化是将一个对象转换...

    IO流pdf宝典

    在使用流的过程中,经常会遇到以下几种异常: 1. **IOException**: 所有的I/O操作异常都会抛出此类异常。 2. **FileNotFoundException**: 当尝试打开一个不存在的文件时抛出。 3. **EOFException**: 在流结束之前...

    03-03-02-序列化和反序列化1

    2. 序列化对象:使用`ObjectOutputStream`的`writeObject()`方法将对象写入输出流。 3. 反序列化对象:使用`ObjectInputStream`的`readObject()`方法从输入流中读取对象。 在Java中,序列化不仅涉及对象的属性,还...

    io_输入输出流_序列化反序列化_04.zip

    例如,当应用程序遇到异常时,可以序列化当前运行时的对象状态,然后在调试过程中进行反序列化,以便于分析问题发生的原因。 文件io_04可能包含了一些示例代码或练习,用于演示如何使用Java的IO流进行文件操作,...

    day13_IO流02.zip

    ObjectOutputStream和ObjectInputStream使得对象可以被写入和读取,从而实现持久化存储。 6. **多路复用流(Piped Stream)** - PipedInputStream和PipedOutputStream用于在不同的线程间传递数据,形成一个管道,...

    Android应用源码之IOStreamSample.zip

    通过分析`IOStreamSample`项目,开发者不仅可以学习到基本的流操作,还能了解到如何在实际项目中选择合适的流类型,优化数据传输,以及如何处理可能遇到的问题。同时,它还可能包含了一些高级特性,如流的组合和链式...

    Java实现序列化例子

    它是Java语言内置的一种特性,主要用于持久化数据,也可以在进程间传递对象,或者在网络上传输对象。在Java中,如果一个类需要支持序列化,那么这个类就需要实现`java.io.Serializable`接口,尽管该接口没有任何方法...

    服务器与客服端的连接

    数据传输方面,JAVA提供了一系列的标准类如ObjectInputStream和ObjectOutputStream,用于对象的序列化和反序列化,使得我们可以方便地在网络之间传递复杂的数据结构。例如,服务器可以通过ObjectOutputStream将对象...

    对象的序列化和反序列化

    为了将一个对象序列化到文件,我们可以使用`ObjectOutputStream`: ```java User user = new User(); user.setName("Alice"); user.setAge(25); try (FileOutputStream fos = new FileOutputStream("user.ser"); ...

    java中的序列号和反序列化.doc

    - **网络传输**:通过序列化机制可以在不同系统之间传递对象,例如在分布式系统中进行远程过程调用(RPC)。 - **进程间通信**:不同进程可以通过序列化的方式交换数据。 ##### 1.2 实现序列化的方法 为了使一个对象...

    java教程之对象序列化使用基础示例详解

    `ObjectOutputStream`负责将对象写入输出流,提供了`writeObject()`方法用于序列化,而`ObjectInputStream`则从输入流中读取对象,使用`readObject()`方法进行反序列化。使用这两个类时,确保对象是可序列化的,否则...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    java基础语法程序源代码

    - 文件输入输出流(FileInputStream/FileOutputStream)和对象序列化(ObjectInputStream/ObjectOutputStream)。 通过这些章节的学习,你可以逐步建立起对Java编程的基础认识,了解如何编写有效的Java代码,并为...

    java作业13_java_

    在"java作业13"的项目中,学生可能已经实现了对特定对象的序列化和反序列化功能,这不仅有助于学习理解这两个概念,还能在实际应用中,如保存游戏进度、缓存对象或在网络间传递数据时发挥作用。通过不断的练习和实践...

    alheli-serializacion-1.0.jar.zip

    1. **安全性**:反序列化时,如果不受信任的数据源传递的对象被反序列化,可能会触发恶意代码的执行。因此,谨慎处理反序列化的数据是至关重要的。 2. **性能**:默认的序列化方式可能会生成大量的字节流,对于大量...

    精心收集的关于java的面试题

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而备受开发者青睐。这份精心收集的面试题库涵盖了2011至2012年间的热点问题,旨在帮助求职者全面了解并准备Java面试。下面将详细阐述这些...

    java饭后茶语聊天室文件传输与聊天系统设计答辩ppt.pptx

    - **群聊功能**:用户登录后可以参与群聊,聊天信息通过对象流(ObjectInputStream和ObjectOutputStream)传输,保证对象的完整性和安全性。 - **个性化功能**:提供改变字体颜色、更换聊天背景等增强用户体验的特性...

    TestParcal

    当需要在不同的Activity之间传递大量或者复杂的数据时,单纯依靠Intent的putExtra方法可能会遇到限制,因为Intent只能传递基本类型或者Parcelable接口实现的对象。在这种情况下,"序列化"就显得尤为重要。序列化是一...

    java编程百例

    7. **输入/输出流**:I/O流的概念,字节流和字符流的区别,文件操作,缓冲流的使用,以及ObjectInputStream和ObjectOutputStream实现对象的序列化和反序列化。 8. **集合框架**:ArrayList、LinkedList、HashSet、...

Global site tag (gtag.js) - Google Analytics