java.io.Serializable这个接口

【数据库】银行/信贷业务测试工作中涉及的数据库表格 银行/信贷业务测试工作中涉及的数据库表格,金融信贷测试人必看! 阅读详情
接口一共有3种…一种就是你认为合理的应该存在的包含抽象方法的…一种是里边全部是常量的…还有就是你问的这种什么都没有的…这种接口被称作为标示接口…实现了它标示了你具备了墓种特性…就是一个标志…但是没它不行…常见的还有克隆的接口也是没有任何方法的
 1、序列化是干什么的?
   简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
 
 2、什么情况下需要序列化 
a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;
 
 3、当对一个对象实现序列化时,究竟发生了什么?
在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:
 
java 代码
  1. Foo myFoo = new Foo();
  2. myFoo .setWidth(37);
  3. myFoo.setHeight(70);

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

4、实现序列化(保存到一个文件)的步骤
a)Make a FileOutputStream
java 代码
  1. FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream
java 代码
  1. ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object
java 代码
  1. os.writeObject(myObject1);
  2. os.writeObject(myObject2);
  3. os.writeObject(myObject3);
d) close the ObjectOutputStream
java 代码
  1. os.close();
相关注意事项
a)序列化时,只对对象的状态进行保存,而不管对象的方法;
b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
d)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:

1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分配,而且,也是没有必要这样实现。
 
AI快速变现之路,AI视频创作 初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。 阅读详情

相关推荐

学习记录——SIMPACK生成轨道谱文件的方法

生成轨道谱文件的方法,可以用于实测轨道谱导入和自制轨道谱导入仿真

weixin_51965897的博客 7801

java 序列化接口_java.io.Serializable 序列化接口

什么是序列化、反序列化?Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。序列化通俗一点说就是能将Java对象转化成文本文件的一种方式。什么情况下需要序列化 ?a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;如...

weixin_28799111的博客 789

Android——Handler详解

1. 简介 Handler是一套 Android 消息传递机制 可以说只要有异步线程与主线程通信的地方就一定会有 Handler。 在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理 使用Handler消息传递机制主要是为了多个线程并发更新UI的同时,保证线程安全 2. 相关概念解释 Handler、Message、Message Queue、Looper Android消息机制: 以Handler的sendMes

Yawn 7万+

Java Serializable接口实现问题

JavaBeans       要了解Serializable接口之前先来了解最基本的JavaBeans。JavaBeans为我们提供了最简单的Java类实体,这些实体伴随着业务在应用中来回穿梭。JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用

纸上得来终觉浅,绝知此事要躬行 5184

域用户无法修改密码问题的解决方案

问题描述:加域的电脑无法更改密码,提示“无法更新密码,为新密码提供的值不符合字符域的长度、复杂度或历史要求”。 问题原因:域控制器中相关设置问题,主要如下图所示(如启用复杂性、最短期限和强制密码历史) 解决方案:在域控制器中更改对应的密码策略即可: ① 禁用复杂性要求 ② 最短使用期限改为0天 ③ 强制密码历史改为0 如果出现无法更改的情况,如下图箭头所指的图标所示 代表需要在域控制器的组策...

运维日记 3万+

数字IC后端实现之快速获取innovus中drv violation的所有net list

数字IC后端设计实现之快速获取innovus中drv violation的所有net list

weixin_37584728的博客 3350

java.io.Serializable 接口

实现 java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化类的所有子类本身都是可序列化的。这个序列化接口没有任何方法和域,仅用于标识序列化的语意。允许非序列化类的子类型序列化,子类型可以假定负责保存和恢复父类型的公有的、保护的和(如果可访问)包的域的状态。只要该类(扩展)有一个无参构造子,可初始化它的状态,那么子类型

yzhjisji的专栏 574

PyMuPDF为PDF文件添加注释

我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。

布啦啦 2242

java.io.Serializable接口解释

接口一共有3种: 一种就是你认为合理的应该存在的包含抽象方法的… 一种是里边全部是常量的… 还有就是java.io.Serializable这个接口什么都没有的…这种接口被称作为标示接口…实现了它标示了你具备了墓种特性…就是一个标志…但是没它不行…常见的还有克隆的接口也是没有任何方法的 实现了这个接口,你的类就是可以被序列化的,不用你实现什么方法,...

weixin_33751566的博客 120

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1394

分立器件---电感介绍(7000字)

电感基础整理

HW-BASE的博客 2350

关于串行化,关于java.io.Serializable接口

 关于串行化,关于java.io.Serializable接口 有很多朋友经常弄不清楚为什么要实现java.io.Serializable?他们经常要问什么时候需要实现java.io.Serializable接口?先说说java.io.Serializablejava.io.Serializable是一个标识接口.它没有定义任何方法.实现了这个接口,就代表这个类可以进行

Defonds 的专栏 3938

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

接口java.io.Serializable的用处 (全面搜集总结)

  1、java.io.Serializable,表示序列化,是一个空接口,也就是说这个接口没有声明任何的方法,所以实现这个接口的类也就不需要实现任何的方法。        2、序列化   用在将对象编码成字节流(序列化)及从字节流编码重构对象(反序列化)。     序列化   为远程通信提供了标准的wire-level协议。     3、 要使类的实例实现序列化,只要在它的声明中加入implem

1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【JAVA】通过实现java.io.Serializable接口启用类的序列化

在java中,通过java.io.Serializable接口可以实现类的序列化,从而实现类的读写操作。在之前的java上机实验中用到了这个接口,后来做课程设计,又用到了这个功能,不得不说java的这个接口功能十分强大,但是对于十分小白的我。。。功能强大归功能强大,在敲代码的过程中还是遇到了许多错误,所以写在博客里分享一下。 刚接触java时做过这样一个题: 设计学生类Student,属性

Zingj的博客 1196

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java中java.io.Serializable接口的应用

在Java中java.io.Serializable 用于实现对象的序列化而开发的接口。   java.io.Serializable接口是一个没有任何方法和属性的接口只提供一个标示的作用。   所有要序列化的对象都要实现Serializable接口。   未实现序列化接口的对象进行序列化的时候发生的错误。 java.io.NotSerializableException: com....

天生我材必有用,千金散尽还复来 243

java serializable接口_如何理解java.io.Serializable接口

Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。摘抄于http://www.blogjava.net/jiangshachina/arc...

weixin_39978282的博客 142

java基于java.io.Serializable接口的序列化方式学习

本文看下Java自带的序列化机制。

wang0907的博客 523

Serializable 接口–java.io.serializable

作用:类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 实现了此接口的类有:String, Integer, Boolean, Long, ArrayList, List, File 等等。 当java内存有一个对象的时候

爱拼才会赢,技术成就梦想! 675

如何理解java.io.Serializable接口

java.io.Serializable是一个没有任何待实现方法的接口,此接口在对象序列化的过程中起到了什么作用?或者此接口在java序列化机制中扮演什么角色? Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指

deeplearnings的博客 3182

java.io.Serializable接口的作用

https://blog.csdn.net/vaecer/article/details/44196357

极客on之路 2711

实现 java.io.Serializable接口的作用

实现java.io.Serializable接口的类启用了类的可序列化。未实现此接口的类将不会将其任何状态序列化或反序列化。可序列化类的所有子类本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 为了允许序列化非可序列化类的子类型,子类型可能负责保存和恢复超类型的public,protected和(如果可访问)包字段的状态。只有当扩展的类具有可访问的no-arg构造函数初始...

哟,你又在偷偷写bug! 575

Hibernate的实体类为什么需要实现 java.io.Serializable 接口

Hibernate 有二级缓存,缓存会将对象写进硬盘,就必须实例化,以及兼容对象在网络中的传输等。 Java 中常见的 String 也实现了 java.io.Serializable 接口。 实现 java.io.Serializable 接口的类是可序列化的,没有实现此接口的类将不能使他们的任一状态被序列化或者逆序列化,序列化类的所有子类和其本身都是可序列化的,这个序列化接口没有任何方...

weixin_30840253的博客 89
上一篇: Java序列化的机制和原理
下一篇: Android应用程序的生命周期
RationalGo
博客等级 码龄24年 82粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值