最近我在看书上 用实现 Serializable 类 来实现串行化的例子,其中有一句代码我看不懂 特来请教。private static final long serialVersionUID = 1L;我看着感觉好像是类似版本号之类的东西,我想问问 前缀 final 是不是就是说 这个变量是无法改变值的?还有 1L 到底是多大的数值呢?谢谢!

解决方案 »

  1.   

    private static final long serialVersionUID = 1L;这是其实无关紧要的东东
    eclipse会建议你加一个而已
    1L=1
    L表示长整型而已
      

  2.   

    关于serialVersionUID  楼主理解的很真确, 他就是一个私有常量, 且不能改变。1L表示是long类型的, 对于所有Serializable 的类来说都是要有个这样的Id的。
      

  3.   

    1,serialVersionUID   用来表明类的不同版本间的兼容性。如果你修改了此类,   要修改此值。否则以前用老版本的类序列化的类恢复时会出错。为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private   static   final   long   serialVersionUID这个属性,具体数值自己定义。 
    2,控制串行化对象文件版本的,实现了serializable接口的类都应该写这个东西. 
        在警告上点左键就可以自动添加。当然也可以去掉警告。设置:Window--> Preferences--> Java,将serializable   class   without   serialVersionUID的设置由warning改为Ignore。然后Eclipse会重新编译程序,那些警告信息也就消失了。 
    3,1L表示是long类型的1,这个值最好在警告上点左键就让它自动添加,以保证值的唯一性。
      

  4.   

    是无法改变,本身这个就是用来记录版本的,不应该被改变,你还可以用Eclipse自带的生成随机版本号,点下警告即可选择,1L就是长整型1