当前位置: 首页 > news >正文

深圳企业网站制作设计/发稿服务

深圳企业网站制作设计,发稿服务,长沙蒲公英网站建设,云南最大的网络科技公司序列化的目的: 持久化保存对象或复用对象, 正常来说对象只存在于jvm(或内存)中, 如果想在jvm停止运行后保存对象的状态, 或通过网络复用对象(RMI), 则必须序列化. 示例: 1 import java.io.Serializable;2 3 public class Person implements Serializable {4 private stati…

序列化的目的: 持久化保存对象或复用对象, 正常来说对象只存在于jvm(或内存)中, 如果想在jvm停止运行后保存对象的状态, 或通过网络复用对象(RMI), 则必须序列化. 

示例:

 1 import java.io.Serializable;
 2 
 3 public class Person implements Serializable {
 4     private static final long serialVersionUID = 1L;
 5     
 6     private static int age = 10;    //类变量不会被序列化
 7     private String name;
 8     
 9     public Person(String name) {
10         this.name = name;
11     }
12     
13     public String getName() {
14         return this.name;
15     }
16 }

测试类:

 1 import java.io.File;
 2 import java.io.FileInputStream;
 3 import java.io.FileOutputStream;
 4 import java.io.ObjectInputStream;
 5 import java.io.ObjectOutputStream;
 6 
 7 public class Test {
 8     public static void main(String[] args) throws Exception {
 9         File file = new File("person.ser");
10         FileOutputStream fos = new FileOutputStream(file);
11         ObjectOutputStream oos = new ObjectOutputStream(fos);
12         
13         Person person = new Person("John");
14         oos.writeObject(person);
15         oos.close();
16         //下边为反序列化
17         System.out.println(file.getAbsolutePath());
18         FileInputStream fis = new FileInputStream(file);
19         ObjectInputStream ois = new ObjectInputStream(fis);
20         
21         Person newOne = (Person) ois.readObject();
22         System.out.println("get person: " + newOne.getName());
23         ois.close();
24     }
25 }

这样就把person对象以"person.ser"保存到了磁盘上, 打开该文件会看的属性值"John"

 

serialVersionUID的一些知识

当反序列化是需要读取到的对象进行转型

Person newOne = (Person) ois.readObject();

此时Person类对应的是反序列化是jvm里的类, 为保证读取到的对象能正确的转型, 需要将读取到的对象的serialVersionUID和此时jvm里Person类的serialVersionUID进行对比,

如果一致则说明可以正常转型, 如果不一致则说明反序列化得到的对象所属的类与当前jvm里的类版本不一致, 可能会导致转型错误.

但是如果serialVersionUID一致, 但是jvm里的Person类和反序列化得到对象所属的类确实不一样, 比如jvm里的类比反序列化得到的类多了一个成员变量, 此时也不会报错, 但该

成员变量不会被操作. 所以, 当任何一方对类做了改动都要更新serialVersionUID, 因此最好不要使用默认的值(1L), 而是使用eclipse生成的值.

转载于:https://www.cnblogs.com/ykt8465279130/archive/2013/04/28/3048988.html

http://www.lbrq.cn/news/1324477.html

相关文章:

  • 2008服务器网站/网站创建流程
  • 美国建设新闻网站/aso优化怎么做
  • 做汽车行业必须注册际零件网站/网站推广做什么
  • lol福利wordpress/整站优化案例
  • 微信连接微网站/重庆seo招聘
  • 网络推广图片大全/网站怎样优化seo
  • 做羞羞的事视频网站/百度指数分析工具
  • 华侨城网站建设/365优化大师软件下载
  • the7做的网站/互联网项目推广平台有哪些
  • 手机视频网站搭建/浏览器下载大全
  • 销售网站建设常遇到的问题/推广赚钱app哪个靠谱
  • 基于java的视频网站开发/搜索引擎推广排名
  • 门户网站兴化建设局 金/seo编辑是干什么的
  • 网上赚钱的副业/百度首页排名优化哪家专业
  • 大连旅顺口区疫情最新消息/武汉seo群
  • 福田蒙派克s/seo推广网址
  • 嘉兴自助建网站/搜索引擎营销的概念及特点
  • 视频直播网站开发/刷赞抖音推广网站
  • 爱用建站平台的优势/个人网站设计作品
  • 建程网会员共享/武汉seo系统
  • 网页设计和网站设计/网盟推广平台
  • 苏州知名网站建设设计/app推广工作是做什么的
  • 专业的网站建设费用/优化大师平台
  • 游戏卡充值可以做网站吗/百度热搜榜怎么打开
  • 宁波seo自然优化技术/优化大师电脑版官方免费下载
  • 网站建设企业网银e路通/百度灰色词排名代发
  • 龙岩 网站建设/品牌推广手段
  • 如何通过域名直接访问wordpress/百度seo引流怎么做
  • 列举电子商务网站建设需要的语言/南京谷歌推广
  • 有网站前端如何做后台/网站制作模板
  • haproxy应用详解
  • CentOS安装ffmpeg并转码视频为mp4
  • creating and using sequence
  • JAVA后端开发——用 Spring Boot 实现定时任务
  • 【Java EE】多线程-初阶-线程的状态
  • flutter使用firebase集成谷歌,苹果登录