Kotlin 数据 class 默认可序列化吗?

Is Kotlin data class serializable by default?

了解Kotlin后,爱上了data class。 我可以替换具有 equalhash 以及 toString 的 Java classes。 其中大多数 Java class 是 serializable class。所以我的问题是,当我们转换为 data class 时,我还需要明确地使其成为 serializable 吗?喜欢

data class SomeJavaToKotlinClass(val member: String) : Serializable

或者可以

data class SomeJavaToKotlinClass(val member: String)

不,Kotlin 数据 类 不隐式实现此接口。从this example可以看出:

import java.io.Serializable

data class Foo(val bar: String)

fun acceptsSerializable(s: Serializable) { }

fun main(args: Array<String>) {
    val f: Foo = Foo("baz")
    acceptsSerializable(f)  // Will not compile
}

我不得不在 class 的末尾添加 : Serializable 以使其成为可序列化的。就这样

class SizeVariantModel (val price: Double, val discountedPrice: Double?) : Serializable
class ColorVariantModel (val name: String, val colorCode: String) : Serializable

我还必须导入 Serializable

import java.io.Serializable