La plupart des programmeurs vont affecter des valeurs numériques pour chaque élément dans une liste , comme les jours de la semaine , pour rendre le code plus rapidement et d'éviter des erreurs typographiques. Certains langages de programmation fournissent un type d' agent recenseur , ou une énumération , qui vous permet de définir un ensemble fixe de constantes dans un type spécial . En utilisant une énumération construction présente plusieurs avantages , comme une meilleure adaptation de type, la capacité à définir des méthodes personnalisées , accéder à des membres automatiques fournies par le compilateur , et d'améliorer la lisibilité et la maintenance de l'ensemble du programme . Fixer des méthodes personnalisées
Lorsque vous utilisez le type ENUM , vous définissez une nouvelle classe. Tout comme avec n'importe quelle autre classe , vous pouvez inclure des méthodes et des champs personnalisés dans la classe. Cela vous permet de fournir des fonctionnalités encapsulé liée au type ENUM. Par exemple, le suivant définit une classe de type ENUM avec la latitude et la longitude moyenne pour les États -Unis. Il contient une méthode personnalisée , la distance, qui calcule la distance entre une latitude et une longitude passé en paramètre à la méthode
importation java.lang.Math statique * ; . . État ENUM publique { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ), ... WV ( 38,4680 , -80,9696 ) , WY ( 42,7475 , -107,2085 ) ;
double privée latitude final; finale à double longitude privé; Etat (Double latitude, à double longitude ) { this.latitude = latitude ; this.longitude = longitude ;} doubles latitude privé () { latitude de retour; } doubles longitude privé () { longitude de retour; } private static final à double R = 6371 ;
< p > distance double (Double lat , double GNL) {//droit sphérique de cos cosinesreturn (sin ( latitude) * sin (lat ) + cos ( latitude) * cos ( latitude ) + cos (GNL - longitude )) * R ;} }
Enhanced Matching type
Parce que le type d'énumération est une classe, il impose de type correspondant à inclure comparant à l'ensemble des constantes définies dans l'énumération . Cela évite les erreurs en veillant à ce que les paramètres de fonctions seront toujours contenir une valeur dans la classe de type ENUM. Par exemple , si une fonction nécessite une saison en tant que paramètre , le paramètre réel passé à la fonction lors de l'exécution sera comparé les quatre valeurs admissibles définies par l'énumération :
public enum { Saison Printemps, été, HIVER , chute }; Météo public function ( ENUM saison) {...} ;
amélioration de la documentation
L' énumération construction rend le code plus facile à comprendre et à maintenir . En créant une énumération construction de membres avec des noms significatifs , vous code de document que vous créez. Par exemple, déclarer une énumération appelée "Option" , il est facile de comprendre les cas dans le "switch" déclaration :
énumération Option { SAVE JETER , ANNULER }; choix d'options; ... interrupteur ( choisir ) {case SAVE: break; cas DISCARD : break; cas ANNULE : break ;}
automatiques méthodes spéciales
En Java , le compilateur insère automatiquement des méthodes spéciales dans la classe pour le rendre facile d'effectuer des opérations standard. Par exemple, le compilateur insère automatiquement une méthode appelée "valeurs" qui retourne un tableau de valeurs constantes d'énumération dans l'ordre où ils ont été déclarés . Cela rend l'itération sur l'énumération des valeurs très facile, comme dans l'exemple suivant :
pour ( mois m: Month.values ()) { System.out.println ( "% s a % d jours " , m, m.numberOfDays ()); }