`

<转>Java中serialVersionUID的解释

阅读更多
原文地址:http://www.blogjava.net/invisibletank/archive/2007/11/15/160684.html

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,可避开不兼容性问题。
分享到:
评论

相关推荐

    Java中serialVersionUID的解释

    Java中serialVersionUID的解释,对于版本的说明解释问题

    xml解析器,返回XmlNode结构,便于循环处理

    * &lt;p&gt;Title: Xml树&lt;/p&gt; * * &lt;p&gt;Description: &lt;/p&gt; * * &lt;p&gt;Copyright: Copyright (c) 2004&lt;/p&gt; * * &lt;p&gt;Company: &lt;/p&gt; * * @author xulinjian * @version 2.0 */ public class XmlNode implements ...

    简单的servlet增,删,改,查

    &lt;td&gt;&lt;a href='addUser.jsp'&gt;添加&lt;/a&gt;&nbsp; &lt;a href='&lt;%=basePath%&gt;DelUserServlet?id=&lt;%=users.getId()%&gt;'&gt;删除&lt;/a&gt;&nbsp; &lt;a href='updateUser.jsp'&gt;更新&lt;/a&gt;&nbsp; &lt;a href="login.jsp"&gt;登陆&lt;/...

    oscache-2.4.1-full.rar

    &lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; 通过CacheManager类来看怎样缓存对象的,这个类中所用的News只是具体功能的类,我就不贴出来了,你可以自己写一个! view plaincopy to clipboardprint?package...

    Java自定义异常案例--ExceptionManager(java源码)

    * &lt;code&gt;Exception&lt;/code&gt;. It is used to wrap all the &lt;code&gt;Throwable&lt;/code&gt; instances * and handle them in a unified way. It will show the information which consists of * StackTraces and Messages ...

    Servlet查询数据库案例--Query(java源码)

    out.println("&lt;head&gt;&lt;title&gt;DB Query&lt;/title&gt;&lt;/head&gt;\n" + "&lt;body bgcolor=white&gt;&lt;h1&gt;DB Query&lt;/h1&gt;\n" + "&lt;form&gt;&lt;b&gt;Query: &lt;/b&gt;&lt;input name='q'&gt;" + "&lt;input type=submit&gt;&lt;/form&gt;"); // See if a ...

    初学java坦克大战源码

    List&lt;BloodBlock&gt; bloodBlocks = new ArrayList&lt;BloodBlock&gt;(); public void paint(Graphics g) { if(Tank.r.nextInt(100) &gt; 98){ if(this.bloodBlocks.size() &lt;=3 ){ BloodBlock bb = new BloodBlock(Tank.r...

    全面解释Java中的serialVersionUID

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

    java编写根据模板导出excel

    List&lt;HashMap&gt; datas = new ArrayList&lt;HashMap&gt;(); @SuppressWarnings("unchecked") HashMap&lt;String, Object&gt; map = new HashMap(); map.put("name", "1111"); datas.add(map); exportAndDownload...

    java 文件处理代码

    TreeMap&lt;Long,File&gt; tm = new TreeMap&lt;Long,File&gt;(); File file = new File("C:\\z"); File subFile[] = file.listFiles(); int fileNum = subFile.length; for (int i = 0; i &lt; fileNum; i++) { ...

    coreJava: serialVersionUID

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

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子...02.&lt;web-app xmlns:xsi=...

    struts项目搭建

    &lt;%@ page language="java" pageEncoding="GBK"%&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Hello World!&lt;/title&gt; &lt;/head&gt; &lt;body&gt; Hello World! &lt;/body&gt; &lt;/html&gt; 目前位置...

    ssh 万能类分页系统,可复用!

    public class PageBean&lt;DUser&gt; implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private List&lt;DUser&gt; list;//要返回的页面记录列表 private int allRow;//总记录数 ...

    正则表达式测试工具

    bf.append("&lt;br&gt;&lt;br&gt;"); bf.append("一共找打"+i+"个匹配组!"); bf.append("&lt;/h3&gt;"); bf.append("&lt;/body&gt;&lt;/html&gt;"); } jlResult.setText(bf.toString()); ...

    比较简单的添加购物车,不过只有一个小程序

    List&lt;CartItem&gt; items=(List&lt;CartItem&gt;)this.getServletContext().getAttribute("items"); CartItem item=null; for(CartItem i : items){ if(i.getId().equals(id)){ item=i; break; } } ...

    轻量级java web MVC框架

    &lt;param-name&gt;ScanPackage&lt;/param-name&gt; &lt;param-value&gt;com.mvc.controller&lt;/param-value&gt; &lt;/context-param&gt; 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: ...

    java类中serialVersionUID的作用及其使用

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

    cms后台管理

    &lt;id name="id" type="java.lang.Integer" column="id"&gt;&lt;generator class="identity"/&gt;&lt;/id&gt; &lt;property name="title" column="title" type="java.lang.String" not-null="true" /&gt; &lt;property name="content" column...

    用word书签替换的方式将网页内容导出到word

    &lt;textarea name="jcxcrs" style="display:none"&gt;&lt;c:out value="${zywstjfxbgVO.jcxcrs }"/&gt;&lt;/textarea&gt; &lt;textarea name="xcjhl" style="display:none"&gt;&lt;c:out value="${zywstjfxbgVO.xcjhl }"/&gt;&lt;/textarea&gt; ...

Global site tag (gtag.js) - Google Analytics