Case class
Une case classe est définie avec le mot clé case
Elle peut être instanciée sans le mot clé new. Cela est possible car scala génère
automatiquement une classe qu’on appelle object companion ayant le même nom
(Person) contenant deux méthodes :
§
apply : qui construit un objet via les
paramètres de construction et
§
unapply : qui de-construit l’objet qu’on
appelle également extracteur (extraction des attributs via l’objet)
Lors de l’appelle d’instanciation de Person(…) ; on
fait appel à la méthode Person.apply.
Les cases classes sont serializables par défaut avec les
méthodes toString, copy, equals (sur les attributs), hashCode
implémentées …
Par défaut les attributs sont immutables (val) et publiques. Il est possible d’avoir
des attributs mutables avec le mot clé var
ou réduire la visibilité ..
Case object
Les cases objects sont équivalentes
de cases classes n’ayant pas d’attributs de construction ; elles sont
singletons et serializables avec une
implémentation hashCode (à la différence des objects companions). Une case object permet par exemple de créer des
enums, des messages Akka …
Aucun commentaire:
Enregistrer un commentaire