De fleste programmører vil tildele numeriske værdier til hvert element på en liste , som de dage i ugen , for at gøre kodning hurtigere og for at undgå trykfejl . Nogle programmeringssprog giver en optælling type eller enum , der giver dig mulighed for at definere et fast sæt af konstanter i en speciel type. Brug af en enum konstruktion har flere fordele, såsom forbedret type matching , evnen til at definere tilpassede metoder , adgang til automatiske medlemmer leveret af compiler, og den samlede øget læsbarhed og vedligeholdelse af programmet. Vedhæft Brugerdefineret Metoder
Når du bruger enum type du definere en ny klasse . Ligesom med alle andre klasse, kan du medtage tilpassede metoder og felter i klassen. Dette giver dig mulighed for at give indkapslet funktionalitet relateret til enum type. For eksempel definerer følgende en klasse af enum type med den gennemsnitlige længde-og breddegrad for amerikanske stater. Den indeholder en brugerdefineret metode , distance, der beregner afstanden mellem en bredde og længde passerede som parametre til metoden
import statisk java.lang.Math * ; . . Offentlig enum State { AK ( 61,3850 , -152,2683 ) , AL ( 32,7990 , -86,8073 ) , ... WV ( 38,4680 , -80,9696 ) , WY ( 42,7475 , -107,2085 ),
private endelige dobbelt bredde; private endelige dobbelt længde; State (dobbelt bredde, dobbelt længde ) { this.latitude = bredde; this.longitude = længde; } privat dobbelt bredde () {return bredde; } privat dobbelt længde () {return længde; } private statisk endelig double R = 6371 ,
< p > double distance (dobbelt bredde, double lng ) {//kugleformet lov cosinesreturn cos ( sin ( breddegrad) * sin ( lat ) + cos ( breddegrad) * cos ( lat ) + cos (LNG - længde) ) * R ;} }
Enhanced Type matchende
Fordi enum type er en klasse, det gennemtvinger typen matching at omfatte matching mod sæt konstanter defineret i enum . Dette forebygger, at fejl ved at sikre , at parametre til funktioner altid vil indeholde en værdi i nummereringstypen typen klasse. For eksempel, hvis en funktion kræver en sæson som en parameter selve parameter overføres til funktionen på runtime vil blive matchet mod de fire tilladte værdier defineret af enum :
offentlig enum Season { forår, sommer , vinter , FALL }; offentlig funktion vejr ( enum Season ) { ... };
Forbedret Documentation
enum konstruktion gør koden lettere at forstå og vedligeholde . Ved at skabe en enum konstruktion af medlemmer med meningsfulde navne . Du dokument kode som du opretter den For eksempel kaldte erklære en enum "Option" gør det let at forstå de sager på "switch " erklæring : Hej
enum Option { gemme, slette CANCEL }; Option pick , ... switch ( pick ) { sag SAVE: break; tilfælde UDSMID : break; tilfælde CANCEL : break ;}
Automatiske særlige metoder
i Java compileren automatisk indsætter særlige metoder til klassen til at gøre det nemt at udføre standard operationer . For eksempel automatisk den kompiler indsætter en metode kaldet "værdier" , der returnerer en matrix af enum konstante værdier i den rækkefølge , de blev erklæret . Dette gør iteration over enum værdier meget let, som i det følgende eksempel : Hej
for (Måned m: Month.values ( )) { System.out.printf ("% s har % d dage", m, m.numberOfDays ()); }