Serializable的意义
首先说明Serializable主要作用将类的实例持久化保存,序列化就是保存,反序列化就是读取。保存也不一定保存在本地,也可以保存到远方。类一定要实现Serializable才可以
实例
操作的学生类
import java.io.Serializable;public class Student implements Serializable {private int id;private String name;private String sex;// 自定义serialVersionUIDprivate static final long serialVersionUID = 8735132092273200831L;// 加上 transient 关键字后Serializable就不会再本地存储该类型transient private String school;public Student(int id, String name, String sex) {this.id = id;this.name = name;this.sex = sex;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", sex='" + sex + '\'' +'}';}
}
用于测试的实例
import java.io.*;public class Serializable {public static void main(String[] args){
// writeObj();readObj();}/*** 将类作为文本写入硬盘*/public static void writeObj(){Student s=new Student(1,"测试","男");try{ObjectOutputStream objectOutputStream=new ObjectOutputStream(new FileOutputStream("obj.txt"));objectOutputStream.writeObject(s);objectOutputStream.close();}catch (IOException e){e.printStackTrace();}}/*** 将类从文本中提取并赋值给内存中的类*/public static void readObj(){try{ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("obj.txt"));try{Object object=objectInputStream.readObject();Student student=(Student)object;System.out.println(student);}catch (ClassNotFoundException e){e.printStackTrace();}}catch(IOException e){e.printStackTrace();}}
}
测试方法
- 先在main方法中运行writeObj将实例化的学生类写入本地
- 将writeObj方法注释
- 添加readObj方法
- 运行后无异常
- 在Student类增加一个属性
- 运行main函数,出错
- 在新增属性前加入 transient 关键字
- 运行main函数 无错
- 自定义自己的UID
- 运行main函数出错
- 根据错误将错误中的uid复制进入自己定义的uid
- 运行无错
Serializable的意义相关推荐
- sql server 隔离级别
解决数据库并发读取错乱的途径之一就是使用事务进行操作,并且设置相应的事务隔离级别,现在就解释一下SQL Server的四种隔离级别. SQL Server的四种隔离级别知识点整理,特别制作了流程图,方 ...
- Mysql 事务的隔离性(隔离级别)
Mysql 中的事务分为手动提交和自动提交,默认是自动提交,所以我们在Mysql每输入一条语句,其实就会被封装成一个事务提交给Mysql服务端. 手动提交需要先输入begin,表示要开始处理事务,然后 ...
- Serializable接口的意义
程序员面试时,序列化知识点经常会遇到. 张工是一名java程序员,工作5年了,一直从事java开发.最近到某互联网公司面试,做了笔试题后,有一道笔试题是这样子的:Serializable有什么作用,张 ...
- null在java存在的意义何在,Java并发编程——volatile关键字
一.volatile是什么 volatile是Java并发编程中重要的一个关键字,被比喻为"轻量级的synchronized",与synchronized不同的是,volatile ...
- C#[Serializable]在C#中的作用-NET 中的对象序列化
为什么要使用序列化?最重要的两个原因是:将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本:按值将对象从一个应用程序域发送至另一个应用程序域.例如,序列化可用于在 ASP.NET 中保 ...
- C# Serializable(序列化)
System.SerializableAttribute 串行化是指存储和获取磁盘文件.内存或其他地方中的对象.在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原 ...
- Java领域的对象如何传输-了解序列化的意义
我们发现对User这个类增加一个Serializable,就可以解决Java对象的网络传输问题.这就是今天想给大家讲解的序列化这块的意义 Java平台允许我们在内存中创建可复用的Java对象,但一般情 ...
- java序列化Serializable
目前网络上关于对象序列化的文章不少,但是我发现详细叙述用法和原理的文章太少.本人把自己经过经验总结和实际运用中的体会写成的学习笔记贡献给大家.希望能为整个java社区的繁荣做一点事情. 序列化的过程就 ...
- 【转】c# [Serializable]的作用
http://blog.csdn.net/chinarenkai/article/details/3220452 如果你做远程方法调用(RPC)时,比如,服务器端有个类A及对象a,客户端需要无视网络的 ...
最新文章
- pytorch中tensor的unsqueeze()函数和squeeze()函数的用处
- C++学习点滴(多次调用同一个类)
- mysql sum_MySQL中的SUM函数使用教程
- java 证书公钥 私钥_java#keytool#生成私钥证书库、公钥证书库
- Struts2架构流程
- Mujoco模型学习记录
- 算术逻辑单元 —— 串行加法器和并行加法器
- android 蓝牙耳机插拔,一种插拔式蓝牙耳机的制作方法
- Shopee店铺爆单赚钱核心方法!跨境商家必学技能(干货建议收藏)
- lisp横断面数据文件_【干货】横断面测量数据批量转换成断面图,CASS应该如何做?...
- canvas图片合成模糊变清晰的方法
- 数学和计算机竞赛,数学类和计算机类竞赛有哪些??
- 斯坦福SCI写作公开课目录
- MVC、MVP、MVVM模式的概念与区别
- 快捷指令获取url内容_快捷指令入门4—一键打开支付宝扫一扫
- 用popart构建常染色体单倍型网络(Autosomal haplotypes network construction with popart)...
- 国家开放大学2021春2129药物化学题目
- python 中文语音播报,用Python实现语音播报
- 使用Win7 PE安装Win 7原版系统图解
- 中信国健临床通讯2011年1月第2期目录