Flest programmerare kommer att tilldela numeriska värden för varje objekt i en lista , t.ex. veckodagar , för att göra kodning snabbare och för att undvika skrivfel . Vissa programmeringsspråk ger en enumerator typ , eller enum , som tillåter dig att definiera en fast uppsättning konstanter i en speciell typ . Använda en enum -konstruktionen har flera fördelar , såsom förbättrad typ matchning , möjlighet att definiera egna metoder , tillgång till automatiska medlemmar tillhandahålls av kompilatorn , och totalt sett ökad läsbarhet och underhåll av programmet . Fäster skräddarsydda metoder
När du använder enum typ , definierar du en ny klass . Precis som med alla andra klass , kan du inkludera egna metoder och fält i klassen . Detta gör att du kan ge inkapslade funktionalitet relaterad till enum typ . Till exempel definierar följande klass av enum typ med den genomsnittliga latitud och longitud för amerikanska stater . Den innehåller en anpassad metod , distans , som beräknar avståndet mellan en latitud och longitud skickas som parametrar till metoden
import statisk java.lang.Math *; . . Offentliga enum State { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ) , ... WV ( 38,4680 , -80,9696 ) , WY ( 42,7475 , -107,2085 ) ;
privat final dubbel bredd; privat final dubbel longitud; staten ( dubbel latitud , dubbel longitud ) { this.latitude = latitud; this.longitude = longitud; } private double latitud ( ) {return latitud ;} private double longitud ( ) {return longitud; } private static final double R = 6371 ;
dubbla avståndet ( dubbel lat , dubbel LNG ) { //sfäriska lag cosinesreturn cos ( sin ( latitud ) * sin ( lat ) + cos ( latitud ) * cos ( lat ) + cos ( LNG - longitud ) ) * R ; } } Addera Enhanced typ matchande
Eftersom enum typ är en klass , stärker den typ matchning att inkludera matchning mot uppsättning konstanter som definieras i enum . Detta förhindrar fel genom att säkerställa att parametrar till funktioner alltid kommer att innehålla ett värde i enum typ klassen . Till exempel, om en funktion kräver en säsong som en parameter , den aktuella parametern till funktionen vid körning kommer att matchas mot de fyra tillåtna värden definieras av enum :
offentliga enum Season { VÅR , SOMMAR , VINTER , HÖST }; public function väder ( enum Season ) { ... };
förbättrad dokumentation
enum konstruktionen gör koden lättare att förstå och underhålla . Genom att skapa en enum konstruktion av medlemmar med meningsfulla namn , du dokumentet kod när du skapar den . Till exempel , förklarar en enum heter " Option " gör det lätt att förstå de fall i " switch " uttalande :
enum Option { spara, kassera CANCEL }; Option pick ; ... switch ( plocka ) { case SPARA : break ; case Återgå: break ; case CANCEL : break ; } Addera automatisk speciella metoder
Java , kompilatorn automatiskt infogar speciella metoder i klassen för att göra det enkelt att utföra vanliga operationer . Till exempel , den kompilatorn sätter automatiskt en metod som kallas "värden" som returnerar en array av ENUM konstanta värden i den ordning de deklarerades . Detta gör iteration över enum värderar väldigt enkelt , som i följande exempel :
för ( månad m : Month.values ( ) ) { System.out.printf ( " % s har % d dagar" , m , m.numberOfDays ( ) ) ; } Addera