Classes de données dans Kotlin: enregistrez un bon tas de lignes de code (KAD 10)

Nous avons déjà vu les classes dans un article précédent, mais les classes de données vont un peu plus loin en nous aidant à simplifier notre code.

Que sont les classes de données?

Une classe de données est une classe qui ne contient que l’état et n’effectue aucune opération.

L’avantage d’utiliser des classes de données au lieu des classes régulières est que Kotlin nous donne une immense quantité de code auto-généré.

En particulier, il nous donne tout cela gratuitement:

  • Les propriétés déclarées dans le constructeur : cela n’est techniquement pas exclusif à une classe de données, mais cela évite tout le passe-partout des getters et setters, en plus du constructeur.
  • equals() / hashCode()
  • Un ensemble de fonctions appelées componentX(), qui nous permettent de faire une chose cool que nous verrons plus tard.
  • Une méthode copy(), très utile lorsque l’on utilise des objets immuables.

¿ Comment le code Java est-il comparé à une classe de données?

Voici la génialité. Bien que presque tout ce code soit généré par l’E, en Java, nous en avons besoin pour implémenter une classe de données:

public class Person { private String name; private String surname; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (name != null ? !name.equals(person.name) : person.name != null) return false; if (surname != null ? !surname.equals(person.surname) : person.surname != null) return false; return id != null ? id.equals(person.id) : person.id == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (surname != null ? surname.hashCode() : 0); result = 31 * result + (id != null ? id.hashCode() : 0); return result; } @Override public String toString() { return "Person{" + "name='" + name + ''' + ", surname='" + surname + ''' + ", + id + ''' + '}'; }}

Et nous serions encore loin d’atteindre la même quantité de fonctionnalités que Kotlin fournit avec cette ligne:

data class Person(var name: String, var surname: String, var id: String)

C’est là que nous voyons vraiment le potentiel de Kotlin, dans la quantité de code inutile qui nous sauve.

Déstructuration des classes

C’est l’utilisation des fonctions componentX. Grâce à eux, vous pouvez décomposer une classe de données en variables de cette façon:

Vous voulez apprendre le Kotlin?

Consultez mon guide gratuit pour créer votre premier projet en 15 minutes!

val person = Person("x", "y", "z")val (n, s, i) = person

Grâce à cela, vous pouvez faire des choses comme décomposer des paires de cartes dans une boucle:

val map = mapOf(1 to "a", 2 to "b")for ((key, value) in map) { toast("key: $key, value: $value")}

Les objets copient

Comme nous l’avons déjà dit, c’est une bonne pratique pour nous l’immuabilité dans toutes les situations possibles. Si nous implémentons la classe précédente comme immuable:

data class Person(val name: String, val surname: String, val id: String)

Si nous voulons maintenant changer le nom de famille, nous ne pourrons pas.

Lorsque vous travaillez avec l’immuabilité, pour changer l’état d’un objet, vous devez le copier avec la nouvelle valeur. Et c’est l’utilisation de la fonction copy:

val person = Person("John", "Smith", "123abc")val person2 = person.copy(surname="Rogers")

La fonction copy peut recevoir autant de paramètres que de valeurs à modifier. Comme vous pouvez le voir, les paramètres de fonction peuvent être nommés, vous pouvez donc spécifier ceux que vous souhaitez modifier.

Conclusion

les classes de données économisent beaucoup de passe-partout que Java nous oblige à générer, vous vous retrouvez donc avec un code plus facile à comprendre et à maintenir.

Si vous aimez ce que vous avez vu, je vous encourage à vous inscrire à ma formation gratuite, où je vous dirai tout ce dont vous avez besoin pour apprendre à créer vos propres applications Android dans Kotlin à partir de zéro.

J’aime le chargement…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.