After knowing Kotlin, love the data class.
I could replace Java classes that has equal and hash and toString to it.
Most of these Java classes are serializable class. So my question is, when we convert to data class, do I still need to make it serializable explicitly? like
data class SomeJavaToKotlinClass(val member: String) : Serializable
Or it is okay to be
data class SomeJavaToKotlinClass(val member: String)
No, Kotlin data classes do not implicitly implement this interface. You can see from 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
}
I had to add : Serializable at the end of class to make is Serializable. Just like this
class SizeVariantModel (val price: Double, val discountedPrice: Double?) : Serializable
class ColorVariantModel (val name: String, val colorCode: String) : Serializable
I also had to import Serializable
import java.io.Serializable