Het enum type is een nieuwe functie in de Java 1.5.0 taal , bedoeld om tekortkomingen in de wijze opgesomde waarden waren in eerdere versies van Java behandeld lossen . Op zijn meest elementaire , hij neemt een structuur die lijkt op de enum type C - gebaseerde talen , maar het is veel krachtiger . De Enum Object Voordat we naar zichzelf opsommingen , is het best om het probleem dat de nieuwe enum soort is gemaakt om op te lossen illustreren . Beschouw de volgende klasse: public class Kalender { int dayOfWeek GO public static final int maandag = 0 GO public static final int dinsdag = 1 GO public static final int woensdag = 2 GO .... leegte setDayOfWeek ( int datum ) { ... } } Deze klasse slaat de dag van de week met een reeks opgesomde constanten met gehele getallen van 0-7 , die elk met een andere dag , en verwacht wordt dat andere ontwikkelaars die deze klasse gebruikt de constanten bij gebruik van de klasse . Echter, niets afdwingt dit. Andere klassen kunnen de constanten negeren , gebruiken hun eigen constanten ( te beginnen met zondag , misschien) per ongeluk , of zelfs , als gevolg van een bug , passeren \\ " 8 \\ " als een dag van de week , waardoor potentieel een bug verder te propageren dan het zou moeten . Het is ook bijzonder informatief in debuggen , aangezien de waarde van \\ " dayOfWeek \\ " zal worden afgedrukt op de console of een debugger gewoon als een geheel getal dat moet worden opgezocht in de broncode . Opsommingen zijn ontworpen om al deze problemen aan te pakken . Het volgende is van dezelfde klasse, met behulp van de enum soort in plaats van een reeks opgesomde constanten : public class Kalender { openbare enum Dag { maandag , dinsdag, woensdag , donderdag , vrijdag , zaterdag , zondag } Dag dayOfWeek leegte setDayOfWeek ( Dag d ) { ... } } De bovenstaande code , naast het zijn schoner en beter leesbaar , richt zich op alle van de hierboven genoemde met opgesomde constanten problemen . Klanten worden nu gedwongen alleen de opgesomde waarden zelf te gebruiken, en debuggers zal de naam van de opgesomde waarde is en niet een geheel getal te tonen . Bovendien enums een aantal andere voordelen . Zo kunnen ze worden gebruikt met de nieuwe voor - elke lus functie die werd toegevoegd in Java 1.5.0 . De kalender klasse kunnen zijn methode als volgt : leegte printDays ( ) { voor ( Dag d : Day.values ( ) ) { System.out.println ( "Vandaag is " + d ) GO } } Deze methode zal doorlopen al de dagen en uit te printen hun namen . Enums zijn lessen in hun eigen recht , wat betekent dat ze kunnen hun eigen methoden en constructeurs hebben . Beschouw de volgende opsomming , waarin de personages opslaat in een toneelstuk , waardoor met een korte beschrijving van dat personage : openbare enum Karakter { MYSTERIOUS_MAN ( " Tall , dark en knap . " ) , MYSTERIOUS_WOMAN ( " Het dragen van een rode jurk . " ) , voorvechter ( " stormen en heroïsch. " ) , ANTAGONIST ( " Oozing evil . " ) ; String beschrijving GO Karakter ( String beschrijving ) { this.description = beschrijving GO } }
|