`
stinge
  • 浏览: 149673 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中serialVersionUID的解释

    博客分类:
  • java
阅读更多

Java中serialVersionUID的解释

serialVersionUID作用:
       序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式:
       一个是默认的1L,比如:private static final long serialVersionUID = 1L;
       一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
       private static final   long     serialVersionUID = xxxxL;

当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个
     提示功能告诉你去定义 。在Eclipse中点击类中warning的图标一下,Eclipse就会
     自动给定两种生成的方式。如果不想定义它,在Eclipse的设置中也
      可以把它关掉的,设置如下:
        Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==>
        Potential programming problems
        将Serializable class without serialVersionUID的warning改成ignore即可。

如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入 serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别 Serializable向后兼容。

如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。

但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,可避开不兼容性问题。

http://www.blogjava.net/invisibletank/archive/2007/11/15/160684.html
分享到:
评论

相关推荐

    全面解释Java中的serialVersionUID

    以下是对Java中的serialVersionUID进行了全面的分析介绍。需要的朋友可以过来参考下

    coreJava: serialVersionUID

    NULL 博文链接:https://jnh.iteye.com/blog/1300193

    java类中serialVersionUID的作用及其使用

    主要介绍了java类中serialVersionUID的作用及其使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    serialVersionUID.txt

    三期第一张IO笔记 6

    序列化版本号serialVersionUID的作用_动力节点Java学院整理

    序列化版本号serialVersionUID的作用_动力节点Java学院整理.

    serialVersionUID作用全面解析

    全面解析了java中serialVersionUID的作用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java序列化和serialVersionUID的使用方法实例

    主要介绍了java序列化和serialVersionUID的使用方法实例的相关资料,这里说明很详细的使用方法让你彻底学会,需要的朋友可以参考下

    614.612.JAVA基础教程_IO流与网络编程-serialVersionUID的理解(614).rar

    614.612.JAVA基础教程_IO流与网络编程-serialVersionUID的理解(614).rar

    基于Java实现的图像识别

    private static final long serialVersionUID = 1L; private JButton browseBtn; private JButton histogramBtn; private JButton compareBtn; private Dimension mySize; // image operator private ...

    java编写根据模板导出excel

    private static final long serialVersionUID = 1L; private String filename; @SuppressWarnings("rawtypes") public String export() throws Exception { String templateFile = "18.xls"; // String sql...

    从根上读懂阿里手册 | 为啥不能轻易修改serialVersionUID字段

    阿里巴巴开发手册,(四)OOP 规约,第 13 条解释如下: 【强制】序列化类新增属性时,请...首先我们需要了解一下序列化,我们可以简单了理解序列化就是把 Java 对象转换成另一种形态的数据,这种形态的数据可以用于

    java坦克小游戏

    private static final long serialVersionUID = 2568625249670479556L; GamePanel mp=null; public static final int AREAWIDTH=400; public static final int AREAHEIGHT=300; public static void main(String...

    java 文件处理代码

    private static final long serialVersionUID = 7025768684443110109L; public static void main(String[] args) { new TT().getFilePathName(); } public String getFilePathName() { TreeMap,File> ...

    java8集合源码-Java:Java

    java中堆和栈的区别? Java 8 发布的重要特性是什么? 什么是 JVM,它是否独立于平台? 什么是 JIT 编译器? Java中的类加载器是什么? 什么是不同类型的类加载器? Java Compiler 存储在 JDK、JRE 还是 JVM 中? ...

    java万年历代码示例

    private static final long serialVersionUID = 1L; JPanel panel = new JPanel(new BorderLayout()); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(new GridLayout(7, 7)); JPanel panel3 = new...

    基于JAVA的拼图小游戏源码.zip

    基于JAVA的拼图小游戏源码。首先将一张大图分为9块小图片,而后将小图片封装在一个类(继承JButton)因此每张图片都为一个按扭 public class Cell extends JButton { private static final long serialVersionUID...

    《〈Java开发手册(泰山版)〉灵魂13问》.zip

    Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?27 为什么阿里巴巴禁止使用Executors创建线程池?31 为什么阿里巴巴要求谨慎使用ArrayList中的subList方法?37 为什么阿里巴巴不建议在for循环中使用...

    华容道基于Java swing开发

    import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event....

    java序列化实现演示

    Java序列化机制(2)- serialVersionUID 实验 http://blog.csdn.net/suileisl/article/details/16991753

Global site tag (gtag.js) - Google Analytics