C'est un peu une vieille question, mais je pensais que je contribuerais quand même mes 2 cents puisque ce fil est venu dans la conversation aujourd'hui.
Cela ne répond pas exactement pourquoi n'y a-t-il pas de const? mais comment rendre vos cours immuables. (Malheureusement, je n'ai pas encore assez de réputation pour publier un commentaire sur la réponse acceptée)
La manière de garantir l'immuabilité sur un objet est de concevoir vos classes plus soigneusement pour qu'elles soient immuables. Cela nécessite un peu plus de soin qu'une classe mutable.
Cela remonte à l' article 15 Java efficace de Josh Bloch - Minimiser la mutabilité . Si vous n'avez pas lu le livre, prenez-en un exemplaire et relisez-le plusieurs fois, je vous garantis qu'il fera monter votre "jeu java" figuratif .
Au point 15, Bloch suggère de limiter la mutabilité des classes pour garantir l'état de l'objet.
Pour citer directement le livre:
Une classe immuable est simplement une classe dont les instances ne peuvent pas être modifiées. Toutes les informations contenues dans chaque instance sont fournies lors de sa création et sont fixées pour la durée de vie de l'objet. Les bibliothèques de la plate-forme Java contiennent de nombreuses classes immuables, notamment String, les classes primitives encadrées et BigInteger et BigDecimal. Il existe de nombreuses bonnes raisons à cela: les classes immuables sont plus faciles à concevoir, à implémenter et à utiliser que les classes mutables. Ils sont moins sujets aux erreurs et sont plus sûrs.
Bloch décrit ensuite comment rendre vos classes immuables, en suivant 5 règles simples:
- Ne fournissez aucune méthode qui modifie l'état de l'objet (c'est-à-dire les setters, aka mutators )
- Assurez-vous que la classe ne peut pas être étendue (cela signifie déclarer la classe elle-même comme
final
).
- Faites tous les champs
final
.
- Faites tous les champs
private
.
- Garantissez un accès exclusif à tous les composants mutables. (en faisant des copies défensives des objets)
Pour plus de détails, je recommande vivement de prendre un exemplaire du livre.
const
mot - clé, mais aucune fonctionnalité sous-jacente. Corrigé votre titre et vos balises en conséquence.