刚学Java     
调试一个小程序时,编译器给出警告:The serializable class  xx  does not declare a static final serialVersionUID field of type long 。看不明白,能解释一下吗,可能是哪出错了?
谢谢!

解决方案 »

  1.   

    序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性
    可以随便写一个,在eclipse中它替你生成一个. 其实如果你没有考虑到兼容性问题时,那就把它关掉吧.
    其实有这个功能是好的.
    只要任何类别实作了Serializable这个介面,
    如果没有加入serialVersionUID,Eclipse都会给你warning提示,
    这个serialVersionUID为了让该类别Serializable後兼容.考虑一下,如果今天你的类Serialized存到硬碟里,
    可是後来你却更改了类别的field(增加或减少或改名).
    当你Deserialize时,就会出现Exception.这样就会做成不兼容性的问题.但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize.
    这个可以避开不兼容性的问题.自於你说内存的问题,我觉得没差多少吧.
    ------------------
    网上找的
      

  2.   

    你的serialVersionUID定义的有问题
      

  3.   

    你的long类型的erialVersionUID应该申明成static final
      

  4.   

    加上这句话
    private static final long serialVersionUID = 1L;
    就可以了
    欢迎java和jsp的爱好者加入! 
    共同探讨,共同进步 
    群号:8137004