Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas étendre les classes Java Enum pour ajouter de nouveaux éléments ?

Pourquoi ne puis-je pas étendre les classes Java Enum pour ajouter de nouveaux éléments ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 10:29:131040parcourir

Why Can't I Extend Java Enum Classes to Add New Elements?

Impossible d'étendre les classes d'énumération pour ajouter de nouveaux éléments

Les énumérations Java sont des classes finales et ne peuvent pas être sous-classées. Modifier une énumération existante pour ajouter de nouveaux éléments n'est pas réalisable. La conception de l'énumération Java garantit que toutes les valeurs possibles sont connues explicitement au moment de la compilation.

Considérez le code suivant :

enum A {
  a,
  b,
  c
}

enum B extends A {
  d
}

Bien qu'il puisse apparaître que B étend A et ajoute un nouvel élément d , ce n'est pas possible en Java. Étendre une énumération avec une nouvelle valeur entraînerait des incohérences, car d serait à la fois une instance de A et une valeur distincte de B.

De plus, le but d'une énumération est de définir un ensemble fixe de valeurs connues. . Étendre une énumération avec de nouveaux éléments saperait ce concept et introduirait une ambiguïté pour les utilisateurs qui ne connaissent que les valeurs de l'énumération d'origine.

Au lieu d'étendre une énumération, envisagez des solutions alternatives qui s'alignent sur les principes d'immuabilité et de compilation de Java. sécurité du temps. Par exemple, vous pouvez créer une nouvelle énumération avec les valeurs souhaitées ou utiliser la composition pour créer une classe qui encapsule une énumération et fournit des fonctionnalités supplémentaires si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn