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 類的方法。