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)与反序列化_.pdf
### Java序列化(Serializable)与反序列化详解 #### 序列化概念与应用场景 序列化是指将程序中的对象转换为一系列字节序列的过程,主要用于保存对象的状态以便将来使用或者在网络之间传输对象。Java提供了内置的...
public class MyClass implements Serializable { // 类的成员变量和其他代码 } ``` 实现 `Serializable` 接口后,可以通过 `java.io.ObjectOutputStream` 将对象写入文件或通过网络传输,也可以使用 `java.io....
[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 at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:298) at org.apache.spark.util.ClosureCleaner$.org$apache$spark...
public class BuildUnionPkId implements Serializable { private static final long serialVersionUID = 8275037592609082750L; private String buildID; private DataCenter dataCenter; // getter and ...
public class MyClass implements Serializable { private static final long serialVersionUID = 6529685098267757690L; // 类的其他成员变量和方法 } ``` 这里有几个关键点需要注意: 1. **访问修饰符**:...
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 ...
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 ...
public class Person implements Serializable { private String name = null; transient private Integer age = null; // 不会被序列化的字段 private Gender gender = null; // ... } ``` 如果执行序列化操作...
Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...
-keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject...
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 方法 } ``` **...
public class MySerializableClass implements Serializable { private String field1; private int field2; // getters and setters } ``` 现在,如果我们有一个`MySerializableClass`的实例`obj`,并希望将其...
【数据库事务管理】\n\n在数据库系统中,事务管理是确保数据一致性、并发控制和恢复机制的关键组成部分。本文将探讨一个并发事务的例子,以及如何分析其调度特性。\n\n首先,我们关注并发事务T1、T2、T3和T4在日程S...
### C#中Serializable的作用与对象序列化详解 #### 一、引言 在现代软件开发中,特别是基于.NET框架的应用程序开发中,对象序列化是一项非常重要的技术。它允许将对象的状态转换为一种持久的形式(如文件或网络传输...
在使用json的时候经常会遇到xxx is not JSON serializable,也就是无法序列化某些对象。经常使用django的同学知道django里面有个自带的Encoder来序列化时间等常用的对象。其实我们可以自己定定义对特定类型的对象的...
public class TestSerial implements java.io.Serializable { // ... } ``` 在这个例子中,通过使用 `@SuppressWarnings("serial")`,我们可以避免 Eclipse 发出关于未定义 `serialVersionUID` 的警告。 #### 二...