`

为何加入:private static final long serialVersionUID

    博客分类:
  • Java
阅读更多

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

 

serialVersionUID 用来表明类的不同版本间的兼容性

简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。

如果我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体能够兼容先前版本,未作更改的类,就需要显式地定义一个名为serialVersionUID,类型为long的变量,不修改这个变量值的序列化实体都可以相互进行串行化和反串行化。

分享到:
评论

相关推荐

    详述IntelliJ IDEA 中自动生成 serialVersionUID 的方法(图文)

    在生成 serialVersionUID 时,可以选择两种方式,一种是采用默认的 1L,即 private static final long serialVersionUID = 1L; 另一种是根据类名、接口名、成员方法及属性等来生成一个 64 位的哈希字段,例如 ...

    Java中serialVersionUID的解释

    那么,serialVersionUID 有两种生成方式:一种是默认的 1L,例如:private static final long serialVersionUID = 1L;另一种是根据类名、接口名、成员方法及属性等来生成一个 64 位的哈希字段,例如:private static...

    序列化版本号serialVersionUID的作用_动力节点Java学院整理

    凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量:private static final long serialVersionUID; 显式地定义serialVersionUID有两种用途:在某些场合,希望类的不同版本对序列化兼容,因此...

    家庭理财系统(java+applet).zip

    private static final long serialVersionUID = 1L; public static JButton bt3 = new JButton("修改"); public static JButton bt4 = new JButton("取消"); public static JLabel lb2 = new JLabel("收入 元"); ...

    coreJava: serialVersionUID

    为了更精确地控制序列化过程,开发者可以在类中显式声明一个`private static final long serialVersionUID`变量,赋值为一个特定的长整型值。这样做可以确保即使类的结构发生改变,只要`serialVersionUID`保持不变,...

    基于JAVA的拼图小游戏源码.zip

    private static final long serialVersionUID = 8290188097137862984L; public static final int IMAGEWIDTH = 200; // 图片宽度 private int place;// 图片位置 public Cell(ImageIcon icon, int place) { ...

    java类中serialVersionUID详解.pdf

    2. **自定义生成**:基于类名、接口名、成员方法及属性等信息生成一个 64 位的哈希值,例如 `private static final long serialVersionUID = xxxxL;`。 #### 三、`serialVersionUID` 在 Eclipse 中的处理 在 ...

    JavaWeb教材配套资源

    private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, ...

    xml解析器,返回XmlNode结构,便于循环处理

    private static final long serialVersionUID = 1L; public XmlNode() { } public String tagName; public String tagValue; public String attList; public int level; public XmlNode parent; public...

    25个经典Spark算子的JAVA实现

    private static final long serialVersionUID = 1L; @Override public String call(Integer number) throws Exception { return "number:" + number; // 将Integer类型转换为String } }); results.foreach...

    mvc实现操作

    private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated ...

    一个简单的一对一 聊天系统

    private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JPanel jPanel = null; private JTextField jTextField = null; private JButton jButton = null; private ...

    java坦克小游戏

    private static final long serialVersionUID = 2568625249670479556L; GamePanel mp=null; public static final int AREAWIDTH=400; public static final int AREAHEIGHT=300; public static void main(String...

    字符串类型的数学表达式 不用解析 直接得出结果

    private static final long serialVersionUID = 7941685726759058059L; public IllegalExpressionException() { } public IllegalExpressionException(String info) { super(info); } }

    idea如何自动生成serialVersionUID

    在IDEA中,有两种方式可以定义serialVersionUID:一种是采用默认的1L,例如private static final long serialVersionUID = 1L;另一种是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,例如private ...

    Struts2 如何使Action取得属性范围 通配符 国际化等内容

    private static final long serialVersionUID = 1L; public String execute() throws Exception { // 获取ActionContext Map, Object> request = (Map, Object>) ActionContext.getContext().get("request"); ...

    java万年历代码示例

    private static final long serialVersionUID = 1L; JPanel panel = new JPanel(new BorderLayout()); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(new GridLayout(7, 7)); JPanel panel3 = new...

    Java远程控制源代码

    private static final long serialVersionUID = 1L; private String fileName; // 文件名称 private long fileLength; // 文件长度 private byte[] fileContent; // 文件内容 public Message(){ } p

Global site tag (gtag.js) - Google Analytics