Kotlin 中的 Serializable 和 serialVersionUid

要在 Kotlin 中为类创建 serialVersionUID,你有一些选项,包括将成员添加到类的伴随对象。

最简洁的字节码来自 private const val,它将成为包含类的私有静态变量,在本例中为 MySpecialCase

class MySpecialCase : Serializable {
    companion object {
        private const val serialVersionUID: Long = 123
    }
}

你也可以使用这些表单,每个表单都具有 getter / setter 方法的副作用,这些方法不是序列化所必需的…

class MySpecialCase : Serializable {
    companion object {
        private val serialVersionUID: Long = 123
    }
}

这会创建静态字段,但也会在随播对象上创建一个 getter 以及 getSerialVersionUID,这是不必要的。

class MySpecialCase : Serializable {
    companion object {
        @JvmStatic private val serialVersionUID: Long = 123
    }
}  

这会创建静态字段,但也会在包含类 MySpecialCase 上创建静态 getter 以及 getSerialVersionUID,这是不必要的。

但是所有工作都是将 serialVersionUID 添加到 Serializable 类的方法。