如何修复serialVersionUID不等于异常在同一类


java.io.InvalidClassException:
com.sungymobile.cache.resource.ResourceCacheLoader$ResourceCache; 
local class incompatible: stream classdesc serialVersionUID = 6381106003702990139, 
local class serialVersionUID = 3777451853403693248

似乎您有一个序列化类,它不提供固定的串行版本参数。你必须提供:

private static final long serialVersionUID = 0L;

类中任何必须缓存的长值。由于Java文档的Serializable接口:

序列化运行时与每个可序列化类关联一个版本号,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否为该对象加载了与序列化兼容的类。如果接收方为对象加载了一个具有不同于相应发送方类的serialVersionUID的类,那么反序列化将导致InvalidClassException。可序列化的类可以通过声明一个名为"serialVersionUID"的字段显式地声明自己的serialVersionUID,该字段必须是静态的、final的、类型为long:

该值用于确定缓存实例是否与当前类的版本相同。

最新更新