`
Ordier
  • 浏览: 61547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于java中的对象序列化

阅读更多
在用netbeans5.0 做GUI时,想要在用户每次登录时,上次的登录信息能够得到保存,当然可以把他们作为配置信息写入文件,每次程序启动时读取文件。但是java语言有更好的方法解决这个问题: Serializable接口

java对象序列化机制一般来讲有两种用途:
   
    1.需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态。
   
    2.使用套接字在网络上传送对象的程序来说,是很有用的。

    我们通过让类实现java.io.Serializable 接口可以将类序列化。这个接口是一个制造者(marker)接口。也就是说,对于要实现它的类来说,该接口不需要实现任何方法。它主要用来通知Java虚拟机(JVM),需要将一个对象序列化。
   
    对于这个,有几点我们需要明确:
   
    1.并非所有类都可以序列化,在cmd下,我们输入serialver java.net.socket,可以得到socket是否可序列化的信息,实际上socket是不可序列化的。
   
    2.java有很多基础类已经实现了serializable接口,比如string,vector等。但是比如hashtable就没有实现serializable接口。
   
    将对象读出或者写入流的主要类有两个: ObjectOutputStream与ObjectInputStream 。ObjectOutputStream 提供用来将对象写入输出流的writeObject方法, ObjectInputStream提供从输入流中读出对象的readObject方法。使用这些方法的对象必须已经被序列化的。也就是说,必须已经实现Serializable接口。如果你想writeobject一个hashtable对象,那么,会得到一个异常。

看到这里或许很多人都会有个疑问,是否所有的对象都可以序列化呢?
   
    当然是不可以的了,至于为什么不可以,那就有很多原因了,比如:
   
    1.安全方面的原因,比如
一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的.
   
    2.资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分配,而且,也是没有必要这样实现.

分享到:
评论

相关推荐

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  <groupId>com.github.xsonorg</groupId>  <artifactId>xson-core  <version>1.0.1 ...

    关于 Java 对象序列化您不知道的 5 件事

    在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序至关重要。 1. **序列化的意义与用途** Java对象序列化不仅用于持久化对象状态,还能在网络传输中...

    Java对象序列化标准最新版

    ### Java对象序列化标准知识点详解 #### 一、系统架构概览 **1.1 概览** Java 对象序列化是一种将Java对象的状态转换成字节流的过程,以便于在网络上传输或存储到磁盘上。Java序列化标准定义了一套规则来描述如何...

    java对象序列化和反序列化

    Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...

    java 对象序列化

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储在磁盘上、在网络上传输或在任何其他需要持久化数据的场景中使用。这个过程涉及到两个主要概念:序列化(Marshalling)和反序列化(Unmarshalling)...

    java对象序列化.ppt

    Java对象序列化是一种将对象转换为字节流的过程,以便可以将其存储在磁盘上,或者在网络中进行传输。这是Java平台提供的一种功能,允许程序员将任何Java对象持久化,即将其状态保存到磁盘,或者在网络中进行传输。...

    JAVA对象序列化保存为XML文件的工具类

    以下是一个简单的示例,展示了如何使用`ObjectToXMLUtil`工具类将Java对象序列化到XML文件以及从XML文件中反序列化: ```java public class Test { public static void main(String[] args) { // 创建一个示例...

    Java实验7 序列化.doc

    在这个实验中,学习了如何利用第三方库实现Java对象到XML的序列化。XStream库的使用简化了这个过程,使得我们可以方便地在Java对象和XML格式之间进行转换,这对于数据交换和持久化具有很高的实用价值。同时,这也...

    java序列化对象传给php

    android(包括java)序列化一个对象传给php去做处理,或是接到php...//将一个对象序列化后返回byte[] String phpserialstr=new String(b); 将变量phpserialstr传给php即可. PHPSerializer中还有unserialize方法,是反序列化

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    前者代表对象输出流,具备`writeObject(Object obj)`方法,可以将对象序列化并写入到目标输出流;后者代表对象输入流,其`readObject()`方法能从输入流中读取字节流并反序列化为对象。 为了使一个Java对象能够被...

    java序列化和反序列化的方法

    Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在 Java 中,序列化和反序列化是...

    Java对象的序列化和反序列化实践

    总结,Java对象的序列化和反序列化是Java开发中不可或缺的一部分,理解并熟练掌握这些技术可以帮助我们更好地处理数据存储和传输的问题。在实际操作时,应根据具体需求选择合适的方法,并注意相关的安全和性能问题。

    C#和Java的序列化反序列化

    在编程领域,序列化和反序列化是两个关键的概念,特别是在跨平台通信、持久化存储以及数据传输中扮演着重要角色。本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指...

    java对象序列化 传输 保存

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储这些对象或通过网络进行传输。这个过程是Java平台的核心特性,它允许开发者将复杂的对象结构持久化或者在网络间进行安全通信。序列化不仅可以用于...

    Java对象序列化的秘密

    Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...

    介绍Java对象序列化使用基础

    序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其...对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。

    Android-Android上的Java对象反序列化

    一、Java对象序列化与反序列化 1. **序列化**: 序列化是将Java对象转换为字节流的过程,以便于存储或传输。通过实现`java.io.Serializable`接口,一个Java对象可以获得序列化的能力。序列化不仅可以保存对象的状态...

Global site tag (gtag.js) - Google Analytics