`

Java中serialVersionUID的解释

    博客分类:
  • java
 
阅读更多
serialVersionUID作用:
       序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式:
       一个是默认的1L,比如:private static final long serialVersionUID = 1L;
       一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
private static final   long     serialVersionUID = xxxxL;
关于其定义,可参考JDK文档:http://download.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html

在Eclipse中,提供两种方式让我们快速添加SerialVersionUid。
  • add default serial version ID:
  • add generated serial version ID:


这里有一个问答很好的理解serialVersionUID的意义。
What’s wrong with the default serialVersionUID?
If no serialVersionUID is declared, JVM will use its own algorithm to generate a default SerialVersionUID, you can check the algorithm here.

The default serialVersionUID computation is highly sensitive to class details and may vary from different JVM implementation, and result in an unexpected InvalidClassExceptions during the deserialization process.

参考:http://www.mkyong.com/java-best-practices/understand-the-serialversionuid/
分享到:
评论

相关推荐

    全面解释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