private static final long serialVersionUID = 1L;这句话想大家都常见
但平常就是简单的过去!!
我想知道这起什么作用啊???@Override还有这个标志
有时这个还报错什么意思啊  

解决方案 »

  1.   

    帮你查了下编译程式时,编译器看到@Override这个Annotation,了解它必须检查这个方法是不是重新定义父类别的ToString()方法,但父类别中并没有这个方法,所以它会回报错误:CustomObject.java:2: method does not override a method from its superclas
    @Override
    ^
    1 error
    重新修改一下程式,编译时就不会有问题了:CustomObject.java 
    public class CustomObject {    @Override    public String toString() {        return "customObject";    }} 
    java.lang.Override是个Marker annotation,简单的说就是用于标示,annotation名称本身即包括了要给工具程式的资讯。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mylifelong/archive/2008/05/14/2445651.aspx
      

  2.   

    private static final long serialVersionUID = 1L; 对象序列化的,实现了serializable的类可以试想序列化,serialVersionUID 的版本号与每个可序列化类相关联
    @Override 
    加上这个可以判断你用该注释修饰的方法是否为一个重载的方法
      

  3.   

    serialVersionUID的作用:serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入 private static final long serialVersionUID这个属性,具体数值自己定义。这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。
    不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现。