Polimorfisme
Per defecte la serialització és completament estàtica respecte els tipus, però en la serialització de estructures de dades polimòrfiques el tipus de les dades es determina en temps d'execució.
Per defecte la serialització és completament estàtica respecte els tipus: l’estructura del objectes codificats es determina en temps de compilació pel tipus dels objectes. Però en la serialització de estructures de dades polimòrfiques el tipus de les dades es determina en temps d’execució.
Closed polymorphism
Static types
Per mostrar la naturalesa estàtica de la serialització de Kotlin, fem la configuració següent: la classe open class Project només té la propietat name, mentre que la classe derivada class OwnedProject afegeix un propietat owner:
@Serializable
open class Project(val name: String)
class OwnedProject(name: String, val owner: String) : Project(name)
fun main() {
val data: Project = OwnedProject("kotlinx.coroutines", "kotlin")
println(Json.encodeToString(data))
}Com que em declarat la variable data amb el tipus Project, l’instància data és serialitza com a Project encara sigui una instància de OwnedProject:
Pots veure que encara que la instància tingui un valor per la propietat owner aquesta no es serialitza.
Si canviem el tipus de la variable data a OwnedProject:
@Serializable
open class Project(val name: String)
class OwnedProject(name: String, val owner: String) : Project(name)
fun main() {
val data = OwnedProject("kotlinx.coroutines", "kotlin")
println(Json.encodeToString(data))
}Però ara tenim un error en temps d’execució perquè la classe OwnedProject no és serializable:
Estás leyendo una vista previa.
Inicia sesión con Google para leer la página completa. Sigue el itinerario de aprendizaje — cada página se desbloquea cuando has leído las que la preceden. El alumnado y el profesorado leen las páginas de su curso sin límite.
Iniciar sesión