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

网站建设不开单seo优化信

网站建设不开单,seo优化信,成都没有做网站的公司,互联网做视频网站需要许可证吗什么是serialVersionUIDJava(TM)对象序列化规范中描述到:serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作。(http://docs.oracle…
  1. 什么是serialVersionUID

Java(TM)对象序列化规范中描述到:serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作。(http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html)。

  1. 对象序列化

声明对象:

package com.shamee.demo;public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

创建序列化测试类:

package com.shamee.demo;import org.junit.jupiter.api.Test;import java.io.*;public class ObjectIOStreamTest {@Testpublic void writeToStream(){try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("student.obj")))) {oos.writeObject(new Student("张三", 18));oos.flush();} catch (Exception e) {e.printStackTrace();}}@Testpublic void readForStream(){try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("student.obj")))) {Object o = ois.readObject();System.out.println(o.toString());} catch (Exception e) {e.printStackTrace();}}
}

运行结果:

  1. 序列化条件

  1. 实现Serializable接口

  1. 声明serialVersionUID常量。

package com.shamee.demo;import java.io.Serializable;public class Student implements Serializable {private static final long serialVersionUID = 42L;private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

在此运行结果:

已能够正常序列化。

  1. Serializable接口

查看Serializable接口源码可以看出,该接口没有声明任何方法,是一个标识接口。实现该接口的对象均会被识别为可序列化对象。

/**
The serialization runtime associates with each serializable class a version* number, called a serialVersionUID, which is used during deserialization to* verify that the sender and receiver of a serialized object have loaded* classes for that object that are compatible with respect to serialization.* If the receiver has loaded a class for the object that has a different* serialVersionUID than that of the corresponding sender's class, then* deserialization will result in an {@link InvalidClassException}.  A* serializable class can declare its own serialVersionUID explicitly by* declaring a field named <code>"serialVersionUID"</code> that must be static,* final, and of type <code>long</code>:** <PRE>* ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; 
If a serializable class does not explicitly declare a serialVersionUID, then
* the serialization runtime will calculate a default serialVersionUID value
* for that class based on various aspects of the class, as described in the
* Java(TM) Object Serialization Specification.   However, it is strongly
* recommended that all serializable classes explicitly declare
* serialVersionUID values, since the default serialVersionUID computation is
* highly sensitive to class details that may vary depending on compiler
* implementations, and can thus result in unexpected
* InvalidClassExceptions during deserialization.
*/

从注释中可以看出,实现该接口。需要显示声明一个serialVersionUID。用于序列化运行时与每个可序列化类关联一个版本编号,称为serialVersionUID,在反序列化过程中使用验证序列化对象的发送方和接收方是否已经加载。

如果可序列化类没有显式声明serialVersionUID,则序列化运行时将计算一个默认serialVersionUID,因为默认的serialVersionUID计算为高度敏感的类细节,可能变化取决于编译器实现,从而导致意外在反序列化期间InvalidClassException。

简单的说,就是该serialVersionUID用于标识对象序列和反序列化过程中是唯一匹配的。

  1. 自动生成的serialVersionUID问题

自动生成的serialVersionUID可能会导致序列化和反序列化中导致异常。具体实验步骤:

  1. 声明student类,实现Serializable接口,不显式声明serialVersionUID

  1. 将对象进行序列化

  1. 修改student类

  1. 将student对象进行反序列化

声明student类:

package com.shamee.demo;import java.io.Serializable;public class Student implements Serializable {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

序列化:

@Testpublic void writeToStream(){try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("student.obj")))) {oos.writeObject(new Student("张三", 18));oos.flush();} catch (Exception e) {e.printStackTrace();}}

序列化成功:

修改student类:

package com.shamee.demo;import java.io.Serializable;public class Student implements Serializable {private String name;private int age;private int code;public Student() {}public Student(String name, int age, int code) {this.name = name;this.age = age;this.code = code;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", code=" + code +'}';}
}

接着反序列化:

直接报错,从报错信息可以看出:serialVersionUID自动生成取决于class类的字节码。因为前后类的变更导致对象的serialVersionUID发生变化,导致对象在序列化和反序列化中找不到唯一匹配标识,从而导致异常。

所以需要显式声明serialVersionUID。

  1. 如何生成serialVersionUID

IDEA点击File->Editor->Inspections。搜索框搜索UID,选择Serializable class without 'serialVersionUID'右侧复选框打勾,右下角Severity选择warning,点击OK。

之后序列化类右侧会有警告标签,点击警告标签有提示Add 'serialVersionUID' field,点击即可快速生成serialVersionUID。

无聊的小知识+1!!!

http://www.15wanjia.com/news/7033.html

相关文章:

  • 那个网站可以做考卷网络整合营销案例
  • 大数据比赛网站建设买链接网站
  • 织梦做的网站织梦修改网页模板新闻投稿
  • 计算机应用技术网站开发基础知识网络营销软件下载
  • 网站建设与制作价格昆明网络营销
  • 网站怎样做推广计划微信公众号怎么推广
  • 内销机械做哪个网站好网络营销公司招聘
  • python做网站缺点电商运营推广是做什么的
  • 淄博做网站的哪家最好深圳精准网络营销推广
  • 生物科技公司网站建设阿里云万网域名注册
  • 怎么做网页版网站网络推广的方法有哪些
  • 波密网站建设如何进行网站推广?网站推广的基本手段有哪些
  • 星速浏览器重庆seo什么意思
  • 长沙做网站推荐北京seo专业团队
  • 公众号开发 网站建设百度客户端电脑版
  • 珠海电商网站制作bt搜索引擎最好用的
  • 贵州网站建设维护如何让自己网站排名提高
  • falsh网站模板下载网站关键词优化外包
  • 正规网站做菠菜广告项目营销策划方案
  • 做公司企业网站长沙县网络营销咨询
  • 郑州公司网站平台建设软文内容
  • 网站 稳定性武汉seo推广优化公司
  • 建设网站备案与不备案区别产品推广软文500字
  • 工会网站平台建设同城推广引流平台
  • 怎么给网站动态做伪静态泰安做百度推广的公司
  • 金融棋牌网站建设官方app下载安装
  • 建设部机关服务中心网站长沙seo排名公司
  • 淘宝做详情页代码网站百度seo营销推广多少钱
  • 怎么做网站运营宁波seo在线优化哪家好
  • 免费学校网站模板html今天最新的新闻头条新闻