- 浏览: 314379 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 565Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1546我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1281String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1140今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 422讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 917emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 401BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5381、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2913http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2226有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 964spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 660java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 476诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 476http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 437Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 365要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 457spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1031需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 843按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 477412345
相关推荐
主要介绍了Java对象Serializable接口实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何...
主要为大家详细介绍了java中Serializable接口作用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
代码中,我们定义了一个 Person 类,并实现了 Serializable 接口。Person 类有两个属性:name 和 age,其中 age 属性被标记为 transient,表示不参与序列化。我们创建了一个 Person 对象,并将其序列化到文件 person...
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
Serializable有一个子接口Externalizable,实现Externalizable接口的类可以自行控制对象序列化荷反序列化过程。 一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。 实现了序列化接口的类,如果...
NULL 博文链接:https://tony-lee-s.iteye.com/blog/1416044
2.接口和抽象类有什么区别 接口不能有方法实现,也就是说接口的方法都是抽象方法,但抽象类可以有方法实现。...序列化的实现一般是通过实现Serializable接口,并且会有一个serialVersionUID,这个ID叫做序列化ID
详细讲解了C#中关于对象序列化的知识,包括基本序列化、选择序列化、自定义序列化;对于了解在C#中如何进行对象的序列化有价值
java.io.Serializable序列化问题
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并...
1、为何要序列化? — 把内存中的java对象能够在磁盘上持久保存 — 通过网络传输对象 ...在java里只需让目标类实现Serializable接口,无须实现任何方法。Serializable接口是一种标记接口,用来标明
Android序列化——Serializable与Parcelable
方法二:实现接口Serializable 实现Serializable接口即可 方法三:实现接口Parcelable 需实现Parcelable接口及其方法,在writeToParcel()方法中写入对象属性;添加公共静态变量CREATOR,在此实现对象属性读出。 ...
[Serializable]在C_中的作用-NET_中的对象序列化,希望有所帮助
序列化 serializable demo ! 序列化 serializable demo !
說明如何將Serializable物件轉成stream
Intent在不同的组件中传递对象数据的应用非常普遍,大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口。 Android中Intent传递对象的两种方法Serializable,Parcelable请点击...
Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);...当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口。
Serializable的增删改查操作,已经经过验证,可以直接运行。