- 浏览: 324421 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
当一个类实现了Serializable接口时,表明该类可以被序列化,这个时候Eclipse会要求你为该类定义一个字段,该字段名字为serialVersionUID,类型为long,提示信息如下:
The serializable clss Student4 does not declare a static final serialVersionUID field of type long
有两种方式可以解决这个问题(你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式):
1、一个是默认的1L,比如:private static final long serialVersionUID = 1L;
2、另一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = 8940196742313994740L;之类的。
这两种方式通过在警告上面的点击ctrl+1也可以看到,里面也有。
当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
在Eclipse中点击类中warning的图标(或是光标移上去,然后点击crtl+1)一下【即那个黄色的图标】,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉,设置如下:
Window==Preferences==Java==Compiler==Error/Warnings==Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。
如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersinoUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable(序列化后)向后兼容。
如果你的对象序列化后存到硬盘上面后,可是后来你却更改了类的field(增加或减少或改名),当你反序列化时,就会出现Exception的,这样就会造成不兼容性的问题。
但当serialVersionUID相同时(检查序列化的那个对象的serialVersionUID和已有的类里面的serialVersionUID是否相同),它就会将不一样的field以type的缺省值Deserialize(初始化),这个可以避开不兼容性的问题,就不会报错了。
The serializable clss Student4 does not declare a static final serialVersionUID field of type long
有两种方式可以解决这个问题(你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式):
1、一个是默认的1L,比如:private static final long serialVersionUID = 1L;
2、另一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = 8940196742313994740L;之类的。
这两种方式通过在警告上面的点击ctrl+1也可以看到,里面也有。
当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
在Eclipse中点击类中warning的图标(或是光标移上去,然后点击crtl+1)一下【即那个黄色的图标】,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉,设置如下:
Window==Preferences==Java==Compiler==Error/Warnings==Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。
如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersinoUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable(序列化后)向后兼容。
如果你的对象序列化后存到硬盘上面后,可是后来你却更改了类的field(增加或减少或改名),当你反序列化时,就会出现Exception的,这样就会造成不兼容性的问题。
但当serialVersionUID相同时(检查序列化的那个对象的serialVersionUID和已有的类里面的serialVersionUID是否相同),它就会将不一样的field以type的缺省值Deserialize(初始化),这个可以避开不兼容性的问题,就不会报错了。
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 620Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1642我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1447String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1184今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 458讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 973emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 445BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5811、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2981http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2311有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 1017spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 709java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 522诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 512http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 476Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 407要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 490spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1082需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 880按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 489112345
相关推荐
在实现Serializable接口时,需要注意的是必须提供一个固定的serialVersionUID变量,这个变量用于标识该类的版本号,以便在反序列化时可以正确地还原对象。例如,在上面的例子中,我们定义了一个User类,并实现了...
Java 中的 serialVersionUID 是一个非常重要的概念,在实现 Serializable 接口的类中,它扮演着至关重要的角色。那么,serialVersionUID到底是什么?它又是如何生成的?在本篇文章中,我们将详细地解释 ...
这样,当我们创建一个类并实现 Serializable 接口时,IntelliJ IDEA 就会提示我们生成 serialVersionUID。 在生成 serialVersionUID 时,可以选择两种方式,一种是采用默认的 1L,即 private static final long ...
在 Eclipse 中,当一个类实现了 `Serializable` 接口但未明确声明 `serialVersionUID` 时,IDE 会提示警告。此时,用户可以通过以下步骤来生成或忽略该警告: 1. **生成 `serialVersionUID`**: - 点击类中的警告...
在Java编程语言中,`Serializable`接口是一个非常重要的概念,它是实现对象持久化的关键。本文将深入探讨`Serializable`接口的细节,以及与其相关的高级知识。 `Serializable`接口是Java中的一个标记接口,没有包含...
serialVersionUID是Java语言中实现Serializable接口的类必须定义的变量,用于在反序列化时验证类的版本一致性。它是实现类持久化的重要组件,使得类可以被序列化和反序列化,从而实现了类的持久化。 在实际应用中,...
实现了 Serializable 接口的类需要提供一个称为 serialVersionUID 的静态final变量,该变量用于标识类的版本。 serialVersionUID serialVersionUID 是一个静态final变量,用于标识类的版本。当类的结构发生变化时...
当一个实现了`Serializable`接口的类没有显式地声明`serialVersionUID`时,JVM会根据类的信息自动生成一个。但在某些情况下,例如在IntelliJ IDEA(简称IDEA)中开发时,开发者可能会遇到实体类实现了序列化接口却...
在Android中,当一个类实现Serializable接口,那么它的实例就可以被序列化。序列化的过程是将对象转换为字节流,而反序列化则是将字节流恢复为原来的对象状态。 二、序列化的应用场景 1. 数据持久化:序列化可以将...
如果某个类的父类没有实现`Serializable`接口,那么子类仍然可以序列化,但是父类的字段不会被序列化,除非父类中声明了`transient`或`volatile`的字段。 在序列化过程中,有时需要对特定类的字段进行特殊处理。...
为了使一个类支持序列化,需要让该类实现 `Serializable` 接口。实现这一接口的方式非常简单,只需要添加一行代码: ```java public class MyClass implements Serializable { // 类的成员变量和其他代码 } ``` ...
实现Serializable接口的类会被自动处理,无需编写额外的序列化代码,但效率相对较低。 1. 在需要序列化的类上添加`implements Serializable`:这样,Java会自动生成序列化所需的元数据,如serialVersionUID。 2. ...
首先,`Serializable`接口是Java中用于实现序列化的标志接口。它没有定义任何方法,但当一个类实现了这个接口,Java的ObjectOutputStream就可以将该类的对象写入到流中。例如,`MySerializable.java`和`Product.java...
在Java中,实现序列化的类需要实现`java.io.Serializable`接口。然而,仅仅实现这个接口并不足以确保序列化和反序列化始终成功,因为类的结构可能会随时间发生变化,如增加、删除或修改字段。这就是`...
1. **默认序列化**:简单地实现Serializable接口,无需额外代码,适合字段较少且不关心序列化细节的场景。 2. **自定义序列化**:通过实现Externalizable接口,自定义序列化和反序列化逻辑,适合需要优化性能或有...
1. **实现Serializable接口**:实现该接口的类默认支持序列化。 2. **实现Externalizable接口**:这个接口继承自`Serializable`,提供了更高级别的控制,允许开发者自己编写序列化逻辑。 3. **序列化兼容性**:`...
在Java中,如果一个类需要支持序列化,那么该类需要实现`java.io.Serializable`接口,虽然这个接口没有定义任何方法,但是它的存在作为一个标记,表明该类的对象可以被序列化。 序列化的优点主要有以下几点: 1. **...
要使一个类可以被串行化,需要实现 Serializable 接口并提供一个 serialVersionUID 变量。 在实验中,我们定义了一个 Person 类,它实现了 Serializable 接口,并包含了 name、sex 和 age 三个属性。我们使用 ...
- 实现`Serializable`接口:首先,类必须实现`Serializable`接口,表示该类的对象可以被序列化。 - 调用`ObjectOutputStream.writeObject()`:通过`ObjectOutputStream`的`writeObject()`方法将对象写入输出流,这...
在实现 Serializable 接口的类中,如果没有显示地定义 serialVersionUID,Java 序列化机制会根据编译的 Class 自动生成一个 serialVersionUID 作序列化版本比较用。 在实际应用中,serialVersionUID 的应用场景非常...