Différence entre les opérateurs «==» et «===» dans Kotlin

1. Vue d'ensemble

Dans cet article, nous allons parler de la différence entre les opérateurs «==» et «===» dans Kotlin .

Dans Kotlin, tout comme en Java, nous avons deux concepts différents d'égalité, d' égalité référentielle et d' égalité structurelle .

2. Égalité référentielle

Pour l'égalité référentielle, nous utilisons le symbole === qui nous permet d'évaluer la référence d'un objet (s'il pointe vers le même objet). C'est un équivalent de l'opérateur «==» en Java.

Disons que nous avons deux entiers définis:

val a = Integer(10) val b = Integer(10)

et nous les vérifions tous les deux en faisant a === b , qui retournera false car ce sont deux objets séparés, chacun pointant vers un emplacement différent en mémoire.

3. Égalité structurelle

Maintenant, pour l'égalité structurelle, nous utilisons le symbole == qui évalue si les deux valeurs sont identiques (ou égales). Ceci est généralement réalisé en implémentant la méthode equals () en Java.

Donc, en utilisant le même exemple de nombres entiers , nous avons juste besoin de faire a == b , et dans ce cas, il retournera true , car les deux variables ont la même valeur.

4. Comparaison d'objets complexes

Si nous voulons vérifier l'égalité sur des objets plus complexes, les symboles se comporteront de la même manière. Disons que nous avons un utilisateur , qui a une liste de passe-temps:

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

Le === vérifiera l'égalité des références et en utilisant commodément une liste, nous pouvons profiter de l' opérateur == , qui vérifiera l'objet et les données contenues dans la liste .

5. Égalité des tableaux

Pour les tableaux, à partir de Kotlin 1.1, nous pouvons vérifier l'égalité structurelle en utilisant les fonctions infixes contentEquals et contentDeepEquals :

val hobbies = arrayOf("Hiking, Chess") val hobbies2 = arrayOf("Hiking, Chess") assertTrue(hobbies contentEquals hobbies2)

6. Conclusion

Ce tutoriel rapide a montré la différence entre l' égalité référentielle et structurelle dans Kotlin , à travers un exemple très simple.

Comme toujours, la mise en œuvre de tous ces exemples et extraits de code peut être trouvée sur GitHub.

Notez qu'il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.