`
leeleo
  • 浏览: 323094 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

The serializable class XXX does not declare a...

阅读更多

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,这个可以避开不兼容性的问题。

分享到:
评论

相关推荐

    Java序列化(Serializable)与反序列化_.docx

    ### Java序列化(Serializable)与反序列化详解 #### 序列化概念与应用场景 序列化是指将程序中的对象转换为一系列字节序列的过程,主要用于保存对象的状态以便将来使用或者在网络之间传输对象。Java提供了内置的...

    java.io.Serializable序列化问题

    public class MyClass implements Serializable { // 类的成员变量和其他代码 } ``` 实现 `Serializable` 接口后,可以通过 `java.io.ObjectOutputStream` 将对象写入文件或通过网络传输,也可以使用 `java.io....

    C#读取JPEG图片的Exif信息

    [Serializable] public class EXIF { #region -- Class level members -- // Class level members. private Image _picture; #endregion #region -- Constructors -- // Constructors. /// /// This is ...

    org.apache.spark.SparkException: Task not serializable

    org.apache.spark.SparkException: Task not serializable at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:298) at org.apache.spark.util.ClosureCleaner$.org$apache$spark...

    使用@IdClass创建联合主键,并实现外部关联

    public class BuildUnionPkId implements Serializable { private static final long serialVersionUID = 8275037592609082750L; private String buildID; private DataCenter dataCenter; // getter and ...

    java.io.InvalidClassException local class incompatible 处理方法

    public class MyClass implements Serializable { private static final long serialVersionUID = 6529685098267757690L; // 类的其他成员变量和方法 } ``` 这里有几个关键点需要注意: 1. **访问修饰符**:...

    微软内部资料-SQL性能优化3

    If the class is not confident in their understanding, review appendix A04_Locking and its accompanying PowerPoint® file. Transactions in SQL Server provide the ACID properties: Atomicity A ...

    一个简单的开源Android工具类库

    you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in ...

    java 对象默认序列化的干预方法

    public class Person implements Serializable { private String name = null; transient private Integer age = null; // 不会被序列化的字段 private Gender gender = null; // ... } ``` 如果执行序列化操作...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    Android代码混淆及签名.docx编程资料

    -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject...

    Intent传递对象Serializable

    public class User implements Serializable { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } // Getter 和 Setter 方法 } ``` **...

    轉Serializable至Stream

    public class MySerializableClass implements Serializable { private String field1; private int field2; // getters and setters } ``` 现在,如果我们有一个`MySerializableClass`的实例`obj`,并希望将其...

    数据库系统原理(英文)-16-DBS事务管理例题-v2-202012061

    【数据库事务管理】\n\n在数据库系统中,事务管理是确保数据一致性、并发控制和恢复机制的关键组成部分。本文将探讨一个并发事务的例子,以及如何分析其调度特性。\n\n首先,我们关注并发事务T1、T2、T3和T4在日程S...

    Serializable在C#中的作用.NET 中的对象序列化

    ### C#中Serializable的作用与对象序列化详解 #### 一、引言 在现代软件开发中,特别是基于.NET框架的应用程序开发中,对象序列化是一项非常重要的技术。它允许将对象的状态转换为一种持久的形式(如文件或网络传输...

    Python json 错误xx is not JSON serializable解决办法

    在使用json的时候经常会遇到xxx is not JSON serializable,也就是无法序列化某些对象。经常使用django的同学知道django里面有个自带的Encoder来序列化时间等常用的对象。其实我们可以自己定定义对特定类型的对象的...

    java中的SuppressWarnings(xxx).doc

    public class TestSerial implements java.io.Serializable { // ... } ``` 在这个例子中,通过使用 `@SuppressWarnings("serial")`,我们可以避免 Eclipse 发出关于未定义 `serialVersionUID` 的警告。 #### 二...

    序列化 serializable demo

    public class MySerializable implements Serializable { private String name; private int age; // 构造函数,getter和setter方法 // ... } ``` `Product`类可能包含产品相关的属性,如: ```java public ...

    python-serializable-dataclass

    在Python编程中,`python-serializable-dataclass`是一个实用的工具,它扩展了Python的内置`dataclass`模块,使其具有序列化能力。`dataclass`是Python 3.7引入的一个特性,用于简化创建具有默认值和自动实现`__init...

Global site tag (gtag.js) - Google Analytics