De fleste programmerere vil tildele numeriske verdier til hvert element i en liste, slik som de dagene i uken , for å gjøre koding raskere og for å unngå skrivefeil. Noen programmeringsspråk gi en enumerator type eller enum , som lar deg definere et fast sett med konstanter i en spesiell type. Bruke en enum konstruere har flere fordeler, for eksempel forbedret type matching, evnen til å definere tilpassede metoder , tilgang til automatisk medlemmer tilbys av kompilatoren , og generelt økt lesbarhet og vedlikehold av programmet. Fest Custom Metoder
Når du bruker enum type, definerer du en ny klasse . Akkurat som med alle andre klasse, kan du inkludere tilpassede metoder og felt i klassen. Dette tillater deg å gi innkapslet funksjonalitet knyttet til enum type. For eksempel definerer følgende en klasse av enum type med gjennomsnittlig lengde-og breddegrad for amerikanske stater . Den inneholder en tilpasset metode , avstand , som beregner avstanden mellom bredde-og lengdegrad sendes som parametere til metoden
import statisk java.lang.Math * ; . . Public enum State { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ) , ... WV ( 38,4680 , -80,9696 ) , Wyoming ( 42,7475 , -107,2085 ) ;
private final double breddegrad ; private final double lengde ; State ( dobbel bredde , double lengde ) { this.latitude = breddegrad ; this.longitude = lengde ;} private double breddegrad ( ) {return breddegrad ;} private double lengde ( ) {return lengdegrad ;} private static final double R = 6371 ;
< p > dobbel avstand ( dobbel lat , dobbel lng ) { //sfærisk lov cosinesreturn cos (sin ( breddegrad ) * sin ( lat ) + cos ( breddegrad ) * cos ( lat ) + cos ( lng - breddegrad) ) * R; } }
Enhanced Type matching
Fordi enum typen er en klasse , tvinger det typen matching for å inkludere matching mot sett konstanter definert i enum . Dette hindrer feil ved å sikre at parametre til funksjoner vil alltid inneholde en verdi i enum typen klassen . For eksempel, hvis en funksjon krever en sesong som en parameter , selve parameteren sendes til funksjonen under kjøring vil bli matchet mot de fire tillatte verdiene definert av enum :
public enum Season { Vår, sommer , vinter , FALL }; offentlig funksjon vær ( enum Season) { ... };
Forbedret dokumentasjon
enum konstruksjonen gjør koden lettere å forstå og vedlikeholde . Ved å opprette en enum konstruksjon av medlemmer med meningsfulle navn , du dokumentet kode som du oppretter den. For eksempel , erklærte en enum kalt " Option" gjør det lett å forstå sakene i den "bryteren " statement : en
enum Option { lagre eller forkaste AVBRYT }; Option pick ; ... switch ( plukke ) {case LAGRE : break ; tilfelle forkaste : break ; tilfelle AVBRYT : break; }
Automatiske spesielle metoder
i Java kompilatoren automatisk inn spesielle metoder i klassen for å gjøre det enkelt å utføre vanlige operasjoner . For eksempel , den kompilatoren automatisk setter en metode som kalles "verdier " som returnerer en matrise av enum konstante verdier i den rekkefølgen de ble erklært . Dette gjør iterasjon over enum verdsetter veldig enkelt , som i følgende eksempel : en
for (måned m : Month.values ( ) ) { System.out.println ( "% s har % d dager", m , m.numberOfDays ( )); }