zoukankan      html  css  js  c++  java
  • 类接口java序列化作用以及 serialVersionUID

    改章节个人在广东游玩的时候突然想到的...近期就有想写几篇关于类接口的笔记,所以回家到之后就奋笔疾书的写出来发表了

    在网络输传中,我们为了使接收方失掉的数据没有变改,需要将数据列序化,java中供提了Serializable接口,我们可以便方的用使。
    但在我们现实Serializable接口时,eclispe会提示我们上面的话:
    The serializable class XXX does not declare a static final serialVersionUID field of type long 
        每日一道理
    聪明人学习,像搏击长空的雄鹰,仰视一望无际的大地;愚笨的人学习,漫无目的,犹如乱飞乱撞的无头飞蛾;刻苦的人学习,像弯弯的河流,虽有曲折,但终会流入大海;懒惰的人学习,像水中的木头,阻力越大倒退得越快。
    serialVersionUID作用: 
    列序化时为了坚持版本的兼容性,即在版本升级时反列序化仍坚持对象的唯一性。 
    
    你可以便随写一个,在Eclipse中它替你成生一个,有两种成生式方: 
    一个是默许的1L,比如:private static final long serialVersionUID = 1L; 
    一个是根据类名、接口名、成员方法及属性等来成生一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。 
    
    当你一个类现实了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,这个可以避开不兼容性的问题。

    文章结束给大家分享下程序员的一些笑话语录: 人工智能今天的发展水平:8乘8的国际象棋盘其实是一个体现思维与创意的强大媒介。象棋里蕴含了天文数字般的变化。卡斯帕罗夫指出,国际象棋的合法棋步共有1040。在棋局里每算度八步棋,里面蕴含的变化就已经超过银河系里的繁星总数。而地球上很少有任何数量达到这个级别。在金融危机之前,全世界的财富总和大约是1014人民币,而地球人口只有1010。棋盘上,所有可能的棋局总数达到10120,这超过了宇宙里所有原子的总数!经典语录网

  • 相关阅读:
    Oracle的分区打点
    学习Struts2经验总结
    优化MVC,实现数据库表的记录的添加、删除、修改、查询。
    基于struts研究传值问题
    基于“MVC”框架集设计模式,开发用户管理系统!
    使用Struts,实现简单的登录
    QT学习4:使用窗口部件
    QT学习9:绘制函数
    QT学习8:准备战斗
    QT学习6:组装丰富的积木!
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3037451.html
Copyright © 2011-2022 走看看