在Android 11中,本地类的序列化方式被更新,该更新可能会导致以下错误: 在跨越Android版本时,当反序列化的本地类具有不同的serialVersionUID(在不同版本的类中计算的哈希值),则可能会发生本地类不兼容的错误。为了解决这个问题,建议采用以下两个方法之一:
方法1:手动指定serialVersionUID 指定一个固定的serialVersionUID,可以确保在不同版本之间反序列化仍能正常运行。如下所示,假设我们需要手动指定一个serialVersionUID为1L:
public class ExampleObject implements Serializable { private static final long serialVersionUID = 1L; // code here }
方法2: 通过注解指定serialVersionUID 在Java中,可以使用注解为类指定serialVersionUID,下面是使用@Serial注解指定serialVersionUID的示例:
import java.io.Serializable; import java.io.Serial;
public class ExampleObject implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
// code here
}
使用这两种方法之一,可以确保在跨越不同版本的Android时,仍然可以序列化和反序列化对象。