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

serialVersionUID的作用以及设置方法

阅读更多

设置 serialVersionUID默认的生成方式:  private static final long serialVersionUID = 1L;
      serialVersionUID的作用:serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。

在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver Test。
为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入 private static final long serialVersionUID这个属性,具体数值自己定义。这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。
不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现。
分享到:
评论

相关推荐

    Java中serialVersionUID的解释

    在 Eclipse 的设置中也可以把它关掉的,设置如下:Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems,将 Serializable class without serialVersionUID 的 ...

    serialVersionUID作用全面解析

    在 Java 序列化机制中,serialVersionUID 有两种显示的生成方式:一是默认的 1L,二是根据类名、接口名、成员方法及属性等来生成一个 64 位的哈希字段。 下面是一个简单的示例代码,演示了 serialVersionUID 在应用...

    java类中serialVersionUID详解.pdf

    2. **自定义生成**:基于类名、接口名、成员方法及属性等信息生成一个 64 位的哈希值,例如 `private static final long serialVersionUID = xxxxL;`。 #### 三、`serialVersionUID` 在 Eclipse 中的处理 在 ...

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

    当类中的字段或方法名改变时,如果不设置 serialVersionUID 值,可能会抛出异常。serialVersionUID 值是根据类名、接口名、成员方法及属性等来生成一个 64 位的哈希字段。显示设置 serialVersionUID 值可以保证版本...

    全面解释Java中的serialVersionUID

    `serialVersionUID`的主要作用是确保在类版本升级后,序列化的兼容性得以维持。 序列化接口`Serializable`的实现类需要一个`serialVersionUID`字段,它是一个长期不变的标识符,用于识别特定版本的类。当一个类被...

    java中的SuppressWarnings(xxx).doc

    设置方法如下:Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems 将 Serializable class without serialVersionUID 的 warning 改成 ignore。 五、结论 @...

    Serializable-master.zip

    1. serialVersionUID 的作用: `serialVersionUID` 是Java序列化机制中的一个关键元素,它是一个长整型字段,用于版本控制。当一个类被序列化时,Java会根据类的结构(如字段、方法等)生成一个唯一的`...

    GenerateSerialVersionUID

    `GenerateSerialVersionUID`插件则是针对这个特殊需求开发的工具,帮助开发者自动为类生成`serialVersionUID`,避免手动设置带来的麻烦和潜在错误。本文将深入探讨`GenerateSerialVersionUID`及其在Java序列化中的...

    servlet知识点小结

    本文将深入探讨`servlet`的相关知识点,包括`serialVersionUID`的作用、`service()`方法的功能以及`doGet`和`doPost`的区别。 1. **serialVersionUID**: 在Java中,序列化是一个将对象转化为字节流的过程,便于...

    IDEA中实体类实现了序列化接口

    本文将详细介绍这一问题的原因以及如何解决。 #### 二、序列化简介 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,如果一个类需要支持序列化,那么这个类需要实现`java.io.Serializable`...

    Servlet Cookie基本概念和使用方法.pdf

    - **设置Cookie属性**:可以使用`setMaxAge(int seconds)`设定生存期,`setPath(String path)`定义作用路径,`setDomain(String domain)`指定适用的域名,以及`setSecure(boolean flag)`来决定是否仅在HTTPS连接中...

    程序员面试题

    例如,Struts可以根据配置文件中的设置,动态地调用相应的Action类的方法来处理请求。 #### 2. equals 和 == 的区别以及重载 **equals 方法与 == 运算符的区别:** - `==` 主要用于基本数据类型的比较或引用类型...

    servlet生命周期演示代码

    在这里,我们设置了响应的 Content-Type 为 `text/html` 并指定了编码格式为 GBK,并打印出一条消息表示正在执行 `doGet` 方法。值得注意的是,这个示例中还调用了 `doPost` 方法,这可能并不是一个好的做法,但在...

    java反射机制简介

    #### 二、Java反射机制的作用 1. **动态获取类信息**:可以动态获取类的所有属性、方法等信息。 2. **创建实例**:可以动态创建某个类的实例。 3. **调用方法**:可以动态调用一个类的方法,包括私有方法。 4. **...

    java定时器.pdf

    本文将详细介绍Java定时器的使用方法以及在Web环境中的应用。 首先,让我们了解`Timer`类。`Timer`是定时器的实例,它负责调度任务的执行。创建一个`Timer`对象,然后调用其`schedule`系列方法来安排任务执行。例如...

    findbugs常见Bug以及处理办法

    - **处理**:检查该字段的所有使用场景,确定其作用。 - **Usage of getResource may be unsafe if class is extended**:如果一个类被继承了,使用`getResource`可能会不安全。 - **描述**:当类被继承时,`get...

    大鱼吃小鱼

    private static final long serialVersionUID = 1L; public MyJFrame()//构造方法 { init();//自定义方法1 setVisible(true);//可见 } private void init()//自定义方法 { Toolkit tlk = Toolkit....

    注解——WebSerlvet1

    本文将深入探讨`@WebServlet`注解的作用、属性详解以及如何在实际开发中使用。 ### 1. `@WebServlet`注解的作用 `@WebServlet`的主要作用是声明一个类作为Servlet,这样在应用部署到Servlet容器(如Tomcat、Jetty...

    java开始面试的第35天.doc

    【Java面试知识点详解】 在Java面试中,常常会遇到... - 其他行:包含了getter和setter方法,用于获取和设置类的成员变量。 以上是Java面试中常见的基础知识点,理解并掌握这些概念对于进行Java开发和面试至关重要。

    java 万年历

    - `use()`:该方法未完全给出,推测其作用为计算指定年月的第一天是星期几。 - `Resetday()`:用于重置日历视图,即更新各个日期标签的显示。 ### 4. 核心代码解析 - **布局设置**:使用了 `BorderLayout` 和 `...

Global site tag (gtag.js) - Google Analytics