java 对象序列化

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介 阅读详情
java 对象序列化

1、序列化是干什么的?

  简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

2、什么情况下需要序列化 

a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;

3、当对一个对象实现序列化时,究竟发生了什么?

在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:

Foo myFoo = new Foo(); 
myFoo .setWidth(37); 
myFoo.setHeight(70); 

  当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。

FileOutputStream fs = new FileOutputStream("foo.ser"); 
ObjectOutputStream os = new ObjectOutputStream(fs); 
os.writeObject(myFoo); 

4、实现序列化(保存到一个文件)的步骤

a)Make a FileOutputStream 
java 代码
FileOutputStream fs = new FileOutputStream("foo.ser"); 
b)Make a ObjectOutputStream 

java 代码
ObjectOutputStream os = new ObjectOutputStream(fs); 
c)write the object

java 代码
os.writeObject(myObject1); 
os.writeObject(myObject2); 
os.writeObject(myObject3); 
d) close the ObjectOutputStream

java 代码
os.close(); 

5、举例说明

java 代码
import java.io.*; 


public class Box implements Serializable 
{ 
private int width; 
private int height; 

public void setWidth(int width){ 
this.width = width; 
} 
public void setHeight(int height){ 
this.height = height; 
} 

public static void main(String[] args){ 
Box myBox = new Box(); 
myBox.setWidth(50); 
myBox.setHeight(30); 

try{ 
FileOutputStream fs = new FileOutputStream("foo.ser"); 
ObjectOutputStream os = new ObjectOutputStream(fs); 
os.writeObject(myBox); 
os.close(); 
}catch(Exception ex){ 
ex.printStackTrace(); 
} 
} 

} 

6、相关注意事项

a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
c)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:

  1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
  2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。

CAN轴控制流【6041,6040】 【代码】CAN轴控制流【6041,6040】 阅读详情

相关推荐

Unity中Newtonsoft.Json的使用(一)

在Unity中下载Newtonsoft.Json,并进行序列化和反序列化

洛苍离的博客 1万+

对象序列化的含义和意义

3. 跨平台和跨语言支持:对象序列化可以将对象转换为通用的字节序列,使得可以在不同的平台和编程语言之间进行数据交换和通信。这为异构系统的集成提供了便利。1. 持久化存储:通过对象序列化,可以将对象保存到磁盘或数据库中,以便在程序重新启动时可以重新加载和使用这些对象。4. 缓存和性能优化:通过序列化对象并将其存储在缓存中,可以减少从数据库或其他数据源中获取对象的次数,提高系统的性能和响应速度。总之,对象序列化在数据持久化、远程通信和系统集成等方面具有重要的意义,可以方便地在不同的环境中传输和存储对象数据。

qq_43795369的博客 1044

字节跳动扣子AI应用开发平台之实战

推出背景:扣子平台由字节跳动推出,旨在让非开发者也能快速创建、调试和优化聊天机器人。上线时间:扣子平台于2024年2月1日正式上线。功能定位:扣子是一个AI聊天机器人和应用程序编辑开发平台,可以理解为字节跳动版的GPTs。

恩爸编程 5899

对象序列化

1.对象序列化的作用 1、Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能 2、使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由

tianhumanong的博客 5178

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 103

新手3dslicer手动肝脏切割及体积测量(详细图文)

刚接手软件的时候,我一直想用自动分割工具,试验了Med sam,依赖安装不了;试验了英伟达的AI,NvidiaAIAssis,传服务器根本没反应,所有只有用了手动切割。不要求所有层面勾画,但是最好是典型层面都勾画一下,特别是有毗邻脏器密度相近的层面。点击3D后可能三维窗口未显示,可以调整一下窗口大小,有可能显示在我们看见的范围之外。早就准备更新这篇了,由于懒癌发作,一直早葛优躺,今天刚好有点时间,就简单写下来。

linjianping513的博客 5932

序列化的作用

一、序列化的引入、作用           把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。         序列化又称串行化,其目的是以某种存储形式使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。         所谓的序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化为流文件,放入内存或者IO文件中。例如,可

susan19890313的专栏 1万+

告别抓包:一个Xposed模块教你监控抖音App的本地数据变化

本文详细介绍了如何利用Xposed框架开发模块,实现抖音App本地数据监控的技术方案。通过Hook关键方法,开发者可以实时获取用户信息、推荐算法参数等核心数据,无需Root设备即可高效调试。文章包含完整的环境配置、代码实现和优化技巧,为移动应用开发与测试提供创新解决方案。

weixin_27015733的博客 387

对象序列化(串行化)的作用、使用

一、序列化的作用 序列化定义:将对象转换为二进制数据流(操作目标是对象)。 作用:方便传输及保存,可以帮开发者完成保存和读取对象成员变量取值的过程。 规定:要求读写或存储的对象实现Serializable接口(此接口未定义任何方法,仅仅被用作一种标记,以便被编译器作特殊处理)。 也就是说,若想对对象进行序列化,必须先实现Serializable接口。 二、序列化使用方法

lpp1234567的专栏 2198

C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

本文主要介绍Linux和Windows下使用C语言获取各种硬件信息,包括CPU序列号、硬盘序列号、网卡信息(包括网卡名字、IP地址、MAC地址、网卡是否插入网线等)。

叶落花枯的博客 9381

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 929

java对象序列化作用_Java学习之——理解对象序列化

Java的对象序列化就是把对象写入到输出流中,用来存储或传输;反序列化就是从输入流中读取对象。简单的来说是指将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象。要序列化一个对象首先要创造某些OutputStream对象(如FileOutputStream、ByteArrayOutputStream等),然后将其封装在一个ObjectOu...

weixin_42138716的博客 996

一文吃透:从零到一开发一套 ABAP RAP 应用的完整路径

ABAP RAP开发实战摘要 本文系统介绍了ABAP RESTful Application Programming Model (RAP)在企业级应用开发中的实施路径。文章以出差申请业务场景为例,详细拆解了RAP开发的六步主线流程: 数据库表设计:规范主键、审计字段设计 CDS数据建模:通过视图定义业务对象实体及关联 行为定义与实现:使用BDEF声明事务规则,Behavior Pool类实现业务逻辑 业务对象投影:裁剪服务接口视图 服务定义与绑定:按OData协议暴露服务 UI集成测试:支持Fiori E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 511

Java对象序列化

1.说明所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。而对象序列化包含序列化和反序列化二部分,序列化是把Java对象转换为字节序列的过程,反序列化是把字节序列恢复为Java对象的过程。2.用途对象序列化主要有二种用途,一个是把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中,也叫持久化对象;另一个是在网络上传送对象的字节序列,也叫网络传输对象。3.实现序...

水木年华的博客 1851

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java 对象怎么序列化,java对象序列化总结

java对象序列化小结百度百科上介绍序列化是这样的:序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化使其他代码可以查看或修改那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 Serializa...

weixin_39896839的博客 464

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java 对象序列化要序列化那些内容

1.java的对象序列化,只保存对象的类型信息和属性类型和属性值,三部分数据。对象中的方法,不管有多少,都不会进行序列化。package com.hs.javafan; import java.io.Serializable; public class SerializableObject implements Serializable { private String name; private int age; private String address; pub

Alex的专栏 1345

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java 对象序列化磁盘_java对象序列化

定义:对象序列化目标是将对象保存在磁盘中,允许在网络中直接传输对象。序列化机制把内存中的java对象转化成与平台无关的二进制流,从而可以把这种二进制流永久的保存在磁盘上,通过网络把二进制流传送到另一个网络节点,其他程序一旦获得了二进制流,不管是从磁盘还是网络获取的,都可以将此转换成java对象。如果要把某个对象序列化,这个对象必须要实现Serializable接口,实现此接口无需实现任何方法,此接...

weixin_34966374的博客 249

java对象序列化

 java对象序列化概述  序列化的过程就是对象写入字节流和从字节流中读取对象。  将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存在文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。  对象序列化功能可应用在RMI/Socket/JMS/EJB  简化了对象持久化(Persistence)的实现  XML序列化指的是把对象转换成XML数

1669

Java基础之对象序列化

概述Java中的对象的内部状态只保存在内存中,其生命周期最长与JVM的生命周期一样,即JVM停止之后,所有对象都会被销毁。但有时候,Java对象是需要持久化的,因此Java提供了一种对象持久化方式——对象序列化机制(Object serialization),可以很容易的在JVM中的活动对象和字节数组(流)之间进行转换。对象序列化保存的是对象的”状态”,即它的成员变量。由此可知,对象序列化不会关注类

#include<?> 3317

Java对象流、对象序列化与反序列化

Java对象流、对象序列化与反序列化 对象的序列化可以将一个对象的成员信息保存为一个datdatdat文件存到硬盘上,反序列化就是可以直接从该文件读该对象。 package Exp7; import java.io.*; class PersonalInfo implements Serializable { //实体类实现接口Serializable private static final long serialVersionUID = 1L; private String na

Harris-H的博客 570

Java中对象的序列化

简单的说,是对对象进行序列化的处理,以流的形式进行传输。其目的是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。 Java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的“深复制”,即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。

等一个晴天 1444

java 对象序列化实例_Java对象序列化

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初...

weixin_31293733的博客 214

Java之对象序列化

一、简介 对象序列化的目的是将对象保存到磁盘, 或者允许在网络中传输。相对的, 反序列化就是根据磁盘中保存的文件恢复对象。 要让某个类的对象能够序列化, 需要实现下面2个接口之一: -Serializable -Externalizable 二、对象流实现序列化 通过实现Serializable接口让一个类的对象可序列化的步骤十分简单, 仅仅是在声明一个类时声明实现该接口即可, 无需实现任何方法 ...

csdnLeraner的博客 587

Java 中的对象序列化

对象的序列化(Serialize)指将一个Java对象写入IO流中,与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象,如果需要让某个对象支持序列化机制,则必须让它的类是可序列化的(serializable)。 为了让某个类是可序列化的,该类必须实现如下两个接口之一: 1、Serializable(常用) 2、Externalizable(不常用) J...

是魔鬼还是秀儿的博客 390
上一篇: Android-创建自定义组件
下一篇: 解决requestFeature() must be called before adding content错误
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值