Sobes.tech
Junior — Middle

Prečo je v Kotlinu zakázané dediť od data class?

sobes.tech AI

Odpoveď od AI

V Kotlinu je dedičnost od data class zabranjena jer data class automatski generira metode poput equals(), hashCode(), toString(), pa tudi copy() in komponente za destrukturiranje. Dovoljevanje dedičnosti bi lahko povzročilo nejasnosti in napake v vedenju teh metod, saj lahko podrazred spremeni stanje ali logiko, s čimer krši pogodbo, določeno v data class.

Zato prepoved dedičnosti zagotavlja celovitost in napovedljivost vedenja data class.

Primer:

data class User(val name: String, val age: Int)

// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Napaka pri prevajanju