Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Pred premiestnením na výpočtov seba , je to najlepšie pre ilustráciu problému , ktorý sa vytvoril nový typ enum riešiť . Zvážte nasledujúce triedy :
public class Kalendár {
int denVtýdnu
GO
public static final int pondelok = 0
GO
public static final int utorok = 1
GO
public static final int stredu = 2
GO
....
void setDayOfWeek ( dátum int ) { ... }
}
Táto trieda uchováva deň v týždni pomocou sady zoznamu konštánt s celočíselnými hodnotami 0-7 , z ktorých každá zodpovedá na iný deň , a očakáva sa , že ďalší vývojári používajúci tejto triedy sa používať tieto konštanty pri použití triedy . Nič však vynucuje to . Ostatné triedy by mohol ignorovať konštanty , používať vlastné konštanty ( od nedele snáď ) omylom , alebo dokonca , v dôsledku chyby , odovzdať \\ " 8 \\ " ako deň v týždni, čo potenciálne umožňuje bug šíriť ďalej , než by mal . Je to tiež predovšetkým uninformative pri ladení , pretože hodnota \\ " denVtýdnu \\ " , bude vytlačená na konzole alebo debugger iba ako celé číslo , ktoré musia byť vzhliadol v zdrojovom kóde . Vymenované typy sú navrhnuté tak , aby riešenie všetkých týchto problémov . Nasledujúci je rovnaká trieda , pomocou enum typ namiesto sady zoznamu konštánt :
public class Kalendár {
public enum Day { pondelok , utorok , streda , štvrtok , piatok , sobota , nedeľa
}
Day denVtýdnu
void setDayOfWeek ( deň D ) { ... }
}
Kódu vyššie , okrem toho , že čistejšie a čitateľnejší , rieši všetky problémy uvedené vyššie s vymenovanými konštánt . Klienti sú teraz nútení používať iba vymenované samotných hodnôt , a Debuggers sa zobrazí názov vyčíslené hodnotou a nie celé číslo . Okrem toho , výpočty majú rad ďalších výhod . Napríklad , môžu byť použité s novým pre - každý funkciu slučky , ktorý bol pridaný v Jave 1.5.0 . Trieda kalendár môže zahŕňať spôsob takhle :
prázdnych printDays ( ) {
pre ( Deň D : Day.values ( ) ) {
System.out.println ( " Dnes je " + d )
GO
}
}
Táto metóda bude iterovat všetky dni a tlačiť svoje mená .
Výpočty sú triedy v ich vlastnej pravý , čo znamená , že môžu mať svoje vlastné metódy a konštruktory . Zvážte nasledujúci výpočet , ktorý ukladá postavy v hre , čo sa stručným popisom tohto charakteru :
public enum postavy {
MYSTERIOUS_MAN ( " Vysoký , tmavý a pekný . " ) ,
MYSTERIOUS_WOMAN ( " na sebe červené šaty . " ) ,
protagonista ( " temperamentný a hrdinské . " ) ,
antagonista ( " Vytekanie zlo . " ) ;
String popis
GO
charakteru ( String opis ) {
this.description = popis
GO
}
}