原文地址: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,可避开不兼容性问题。
分享到:
相关推荐
在 Eclipse 的设置中也可以把它关掉的,设置如下:Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems,将 Serializable class without serialVersionUID 的 ...
Java序列化与反序列化是Java编程中一个重要的概念,它允许我们将对象的状态转换为字节流,以便存储或在网络中传输。这个过程被称为序列化,而将字节流恢复为对象的过程则称为反序列化。Java提供了一个内置的机制来...
List<Integer> result = new ArrayList<>(); for (Integer number : iterable) { result.add(number * number); // 平方操作 } return result.iterator(); } }); ``` #### 5. Distinct Operator Distinct...
* <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 ...
<artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <!-- 如果需要使用代码生成器功能,则还需引入以下依赖 --> <dependency> <groupId>com.baomidou</groupId> ...
<artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.1.11</version> </dependency> ``` 接下来,我们需要定义一个公共的返回实体类`BaseResult`: ```java public class BaseResult { private...
Rest<T> restBody = new RestBody<>(); restBody.setMsg(msg); return restBody; } public static <T> Rest<T> okData(T data) { Rest<T> restBody = new RestBody<>(); restBody.setData(data); return ...
// 与JSP页面的<s:file/>标签中的name属性对应 private File myFile; private String myFileContentType; private String myFileFileName; // get和set方法 public File getMyFile() { return myFile; } ...
<td><a href='addUser.jsp'>添加</a> <a href='<%=basePath%>DelUserServlet?id=<%=users.getId()%>'>删除</a> <a href='updateUser.jsp'>更新</a> <a href="login.jsp">登陆</...
<li><a href="<s:url action="Register" />">Register</a></li> <li><a href="<s:url action="Logon!input" />">SignOn</a></li> </ul> </body> </html> ``` 这里 `<s:url action="Logon!input" />` 表示调用名...
<artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 接下来,配置数据库连接。在Spring Boot的`application.properties`文件中,我们需要设置数据源的相关属性,如数据库URL、...
在Java编程语言中,代码块是执行特定任务的语句集合,它们可以是局部的、实例的、静态的,或者用于异常处理。本主题将深入探讨Java中的代码块及其在Struts2框架中的应用。 首先,让我们理解Java的四种主要代码块: ...
cart = new HashMap<>(); session.setAttribute("cart", cart); } if (cart.containsKey(bookId)) { cart.put(bookId, cart.get(bookId) + 1); } else { cart.put(bookId, 1); } response.getWriter()....
在Java编程中,`serialVersionUID` 是一个非常重要的概念,特别是在序列化和反序列化过程中。这个特殊标识符主要用于版本控制,确保不同版本的类在序列化和反序列化时能够正确匹配。当我们讨论`serialVersionUID`时...
### Java 类中 `serialVersionUID` 详解 #### 一、`serialVersionUID` 概述 在 Java 中,`serialVersionUID` 是一个与类关联的长整型常量,用于支持序列化机制。当一个对象被序列化时,该对象所属类的 `...
<br/> }<br/><br/> }<br/> <br/>}<br/><br/><br/> 通过CacheManager类来看怎样缓存对象的,这个类中所用的News只是具体功能的类,我就不贴出来了,你可以自己写一个! view plaincopy to clipboardprint?package...
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request....
>> resources = new HashSet<>(); resources.add(TextFileResource.class); appConfig.setRootResourceClasses(resources); DeploymentConfiguration configuration = new DeploymentConfiguration(); ...
在Java集合框架中,如果要实现元素的比较,通常需要实现`Comparable<T>`接口或者自定义`Comparator<T>`。`Comparable<T>`接口适用于类的实例之间进行自然排序,而`Comparator<T>`接口则用于定制排序规则。例如,在...
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title...