De meeste programmeurs zullen numerieke waarden toe te kennen aan elk item in een lijst , zoals de dagen van de week , om codering sneller en typografische fouten voorkomen . Sommige programmeertalen bieden een enumerator type, of enum , die u toelaat om een vaste set van constanten in een speciaal type definiëren . Met behulp van een enum constructie heeft een aantal voordelen , zoals een betere soort matching, de mogelijkheid om eigen methoden te definiëren , de toegang tot automatische leden die door de compiler , en de algehele verhoogde leesbaarheid en het onderhoud van het programma . Bevestig Custom Methoden Wanneer u het type enum gebruiken , je een nieuwe klasse te definiëren . Net als bij elke andere klasse , kunt u ook aangepaste methodes en velden in de klas . Dit stelt u in staat om ingekapselde functionaliteit gerelateerd aan het type enum bieden . Bijvoorbeeld , de volgende definieert een klasse van enum type met het gemiddelde breedte-en lengtegraad van Amerikaanse staten. Het bevat een aangepaste methode , afstand , dat de afstand tussen een breedte-en lengtegraad doorgegeven als parameters aan de methode berekent import statische java.lang.Math * ; . . Openbare enum State { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ) , ... WV ( 38,4680 , -80,9696 ) , WY ( 42,7475 , -107,2085 ) ; prive finale dubbel breedtegraad ; prive laatste dubbele lengte ; State ( dubbele breedte, dubbele lengte ) { this.latitude = breedtegraad ; this.longitude = lengte ; } private double breedtegraad ( ) { return breedtegraad ; } private dubbele lengte ( ) { return lengtegraad ; } private static final dubbele R = 6371 ; dubbele afstand ( double lat, double lng ) { //bolvormig wet van cosinesreturn cos ( sin (breedtegraad ) * sin ( lat ) + cos ( breedtegraad ) * cos ( lat ) + cos ( lng - lengte ) ) * R ; } } Enhanced Type passende Omdat het type enum is een klasse , het soort matching met combineren tegen de set van constanten gedefinieerd in de enum afdwingt . Dit voorkomt fouten door ervoor te zorgen dat de parameters om functies altijd een waarde in het enum klasse type zal bevatten . Openbare enum Seizoen { LENTE , ZOMER , WINTER : bijvoorbeeld als een functie vereist een seizoen als een parameter , de actuele parameter doorgegeven aan de functie tijdens runtime zal tegen de vier toegestane waarden bepaald door de enum worden geëvenaard , FALL } ; publieke functie weer ( enum Seizoen ) { ... } ; Betere Documentation De enum construct maakt code gemakkelijker te begrijpen en te onderhouden . Door het creëren van een enum construct van leden met betekenisvolle namen , je document code als u deze maakt . Zo verklaarde een enum genaamd " Option " maakt het makkelijk om de zaken te begrijpen in de " switch " statement : enum optie { SAVE , DISCARD , CANCEL }; Option pick ; ... schakelaar ( pick ) {case SAVE : break ; case Verwerpen : break ; case CANCEL : break ; } Automatische bijzondere methoden In Java , de compiler voegt automatisch speciale methoden in de klas om het gemakkelijk maken om standaard bewerkingen uit te voeren . Bijvoorbeeld , de compiler automatisch een methode genaamd " waarden " die een scala aan enum constante waarden terug in de volgorde waarin zij zijn aangegeven . Dit maakt iteratie over de enum waarden zeer eenvoudig , zoals in het volgende voorbeeld : voor (maand m : Month.values ( ) ) { System.out.printf ( " % s heeft % d dagen " , m , m.numberOfDays ( ) ) ; }
|