原文地址: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的解释,对于版本的说明解释问题
* <p>Title: Xml树</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2004</p> * * <p>Company: </p> * * @author xulinjian * @version 2.0 */ public class XmlNode implements ...
<td><a href='addUser.jsp'>添加</a> <a href='<%=basePath%>DelUserServlet?id=<%=users.getId()%>'>删除</a> <a href='updateUser.jsp'>更新</a> <a href="login.jsp">登陆</...
<br/> }<br/><br/> }<br/> <br/>}<br/><br/><br/> 通过CacheManager类来看怎样缓存对象的,这个类中所用的News只是具体功能的类,我就不贴出来了,你可以自己写一个! view plaincopy to clipboardprint?package...
* <code>Exception</code>. It is used to wrap all the <code>Throwable</code> instances * and handle them in a unified way. It will show the information which consists of * StackTraces and Messages ...
out.println("<head><title>DB Query</title></head>\n" + "<body bgcolor=white><h1>DB Query</h1>\n" + "<form><b>Query: </b><input name='q'>" + "<input type=submit></form>"); // See if a ...
List<BloodBlock> bloodBlocks = new ArrayList<BloodBlock>(); public void paint(Graphics g) { if(Tank.r.nextInt(100) > 98){ if(this.bloodBlocks.size() <=3 ){ BloodBlock bb = new BloodBlock(Tank.r...
以下是对Java中的serialVersionUID进行了全面的分析介绍。需要的朋友可以过来参考下
List<HashMap> datas = new ArrayList<HashMap>(); @SuppressWarnings("unchecked") HashMap<String, Object> map = new HashMap(); map.put("name", "1111"); datas.add(map); exportAndDownload...
TreeMap<Long,File> tm = new TreeMap<Long,File>(); File file = new File("C:\\z"); File subFile[] = file.listFiles(); int fileNum = subFile.length; for (int i = 0; i < fileNum; i++) { ...
NULL 博文链接:https://jnh.iteye.com/blog/1300193
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子...02.<web-app xmlns:xsi=...
<%@ page language="java" pageEncoding="GBK"%> <html> <head> <title>Hello World!</title> </head> <body> Hello World! </body> </html> 目前位置...
public class PageBean<DUser> implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private List<DUser> list;//要返回的页面记录列表 private int allRow;//总记录数 ...
bf.append("<br><br>"); bf.append("一共找打"+i+"个匹配组!"); bf.append("</h3>"); bf.append("</body></html>"); } jlResult.setText(bf.toString()); ...
List<CartItem> items=(List<CartItem>)this.getServletContext().getAttribute("items"); CartItem item=null; for(CartItem i : items){ if(i.getId().equals(id)){ item=i; break; } } ...
<param-name>ScanPackage</param-name> <param-value>com.mvc.controller</param-value> </context-param> 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: ...
主要介绍了java类中serialVersionUID的作用及其使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
<id name="id" type="java.lang.Integer" column="id"><generator class="identity"/></id> <property name="title" column="title" type="java.lang.String" not-null="true" /> <property name="content" column...
<textarea name="jcxcrs" style="display:none"><c:out value="${zywstjfxbgVO.jcxcrs }"/></textarea> <textarea name="xcjhl" style="display:none"><c:out value="${zywstjfxbgVO.xcjhl }"/></textarea> ...