2017-06-22 5 views

Répondre

4

Les parties de classes de données générées automatiquement sont:

Le compilateur tire automatiquement les membres suivants de toutes propriétés déclarées dans le constructeur principal:

- equals()/hashCode() pair, 
- toString() of the form "User(name=John, age=42)", 
- componentN() functions corresponding to the properties in their order of declaration, 
- copy() function. 

Si l'une de ces fonctions est explicitement défini dans le corps de la classe ou hérité des types de base, il ne sera pas généré.

La fonction componentN() permet déstructurant comme for ((a, b, c) in dataClass) { ... }

Cependant, les classes de données sont pas en mesure d'être héritée. (Vous pouvez cependant définir une classe de données qui étend une autre classe sans données.)

Si vous pensez qu'il est possible que certaines classes étendent votre classe, ne la transformez pas en classe de données.

Si vous pensez qu'aucune classe ne prolongera votre classe dans le futur, et que vous avez peut-être besoin de la fonction de destruction ou de copy(), faites-en une classe de données.

+0

Merci d'avoir dressé la liste. Je suis maintenant confiant dans le marquage en tant que classe de données. Il ne doit en aucun cas être prolongé et une déstructuration peut être utilisée. – glee8e