java enum java enumeration tutorial with examples
Denne opplæringen vil utdype Java Enum-klassen og konstruktøren. Vi vil lære å bruke Enum gjennom forskjellige Java-programmeringseksempler:
Dette er en spesiell klasse hvis forklaring vil bli gitt i detalj. Et innblikk i Java Enum-klassen vil bli gitt sammen med listen over metoder som den støtter.
Tilstrekkelige programmer som implementerer Java enum-konseptene og noen ofte stilte spørsmål som kan stilles under intervjuene, er inkludert i denne veiledningen for enkel forståelse.
=> Sjekk her for å se Java Training Series for alle.
Hva du vil lære:
Java-oppregning
En Java-oppregning er bare en liste over forekomstvariabler, metoder eller konstruktører. Dette er en gruppe konstanter. Begrepet oppregning ble introdusert i JDK5. Standardegenskapen til hver oppregningskonstant er offentlig, statisk og endelig.
enum Keyword
Oppregning opprettes ved hjelp av et nøkkelord kalt “ enum ”.
Nedenfor er syntaksen som vi kan lage en oppregning med.
Syntaks:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
Merk: enum kan bare defineres i en klasse eller grensesnitt på toppnivå eller i en statisk sammenheng. Det skal ikke være inne i en metode.
enum Eksempel
I dette eksemplet skal vi initialisere fire tellere, dvs. spade, hjerte, diamant og klubb som tilhører en oppregnet type kalt kort.
Deretter vil vi prøve å skrive ut hver av disse tellerne.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Produksjon:
Enum-klasse
En ting du må ha lagt merke til i eksemplet ovenfor (se kommentarer) er at vi ikke brukte en “Nytt søkeord” mens du instantierer. Selv om oppregningene også definerer klasse Enum og konstruktørene, bruker de ikke et nytt nøkkelord.
Vi kan bruke tellerne som er definert på samme måte som den primitive. Enum er en generisk klasse, og alle oppregningene arver Enum.
Syntaks:
// E er oppregningstypen.
klasse Enum
Hvordan bruke Enum i Java
La oss se hvordan du bruker Enum i forskjellige scenarier ved hjelp av Java-eksempler:
Inne i en klasse
Enum kan erklæres innenfor eller utenfor (enum søkeordeksempel) en klasse, men ikke i en metode. Her vil vi demonstrere hvordan enum blir erklært i en klasse.
I eksemplet nedenfor , har vi opprettet en oppregning i en klasse, og så har vi hentet verdien eller telleren ved hjelp av en referansevariabel a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Produksjon:
Iterere Enum gjennom løkker
Her vil vi diskutere hvordan vi kan løpe gjennom en enum. Vi har erklært opptelling med fire opptellere (utenfor en klasse). Så har vi initialisert a for hver sløyfe (inne i en klasse) og prøvd å hente verdien til tellerne.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Produksjon:
hvordan kjører jeg en .jar-fil
I if-else
I programmet nedenfor har vi opprettet en oppregning med tre forskjellige teller og deretter lagret telleren i referansevariabelen for en av de spesifiserte tellerne.
Så har vi startet if-tilstandskontrollen der vi har implementert to betingelser spesifisert med OR, slik at hvis en av disse betingelsene er oppfylt, vil den skrive ut uttalelsen spesifisert i if-tilstanden.
Ellers vil den skrive ut uttalelsen spesifisert i den andre tilstanden.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Produksjon:
I Switch Statement
I programmet nedenfor har vi opprettet en oppregning med fire opptellere. Deretter lagret vi en av tellerne i referansevariabelen. Deretter initialiserte vi en Switch-uttalelse og sjekket hver av disse tellerne.
Ved forekomst av den bestemte telleren, vil den skrive ut uttalelsen som er spesifisert i det aktuelle tilfellet.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Produksjon:
Enum felt og metoder
Enum-feltet
Denne delen vil forklare enumfeltet i detalj. Vi kan legge til felt i Java-enum, og hver teller får disse feltene. Feltverdien skal tildeles konstruktøren av enum.
I syntaksen nedenfor kan vi se at en oppregning er definert med tre oppteller. Ved siden av hver teller har vi definert et felt av typen int. ( F.eks. - (3), (2) og (1) henholdsvis).
Dette summerer at Java enum har en konstruktør som tar en int. Denne konstruktøren setter int-feltet. Når en teller er definert, blir denne int-verdien (spesifisert for den telleren) overført til konstruktøren.
Syntaks:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Merk: For eksempel i Enum-feltet, se avsnittet “ Enum Constructor ”.
Enum Methods
# 1) navn ()
public final String name () - Returnerer navnet på påkallingskonstanten (uendret eller uendret).
# 2) er lik ()
public final boolean equals (Object other) - Returnerer sant hvis obj og påkallende objekt refererer til samme konstant.
# 3) toString
public String toString () - Returnerer navnet på påkallingskonstanten. Stemmer ikke nødvendigvis med navnet som er brukt i oppgavens erklæring.
# 4) klone
beskyttet endelig objektklon ()
kaster CloneNotSupportedException - Dette betyr at enum vil kaste et unntak når de blir prøvd å klone.
# 5) hashCode ()
public final int hashCode () - Returnerer hash-koden for påkallende objekt.
# 6) avslutt ()
protected final void finalize () - enum class kan ikke ha finaliserte metoder. Ingen returverdi.
# 7) CompareTo ()
public final int CompareTo (E obj) - Dette sammenligner enum med det spesifiserte objektet obj. Det returnerer negativt hvis objektet er mindre enn det spesifiserte objektet. Det returnerer positivt hvis dette objektet er større enn det spesifiserte objektet obj, og det returnerer null hvis det spesifiserte objektet er lik dette objektet.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Returnerer oppregningstypen (også kjent som enum deklarerer klasse) som påkaller konstant er medlem.
# 9) ordinær (), verdier () og valueOf ()
Alle disse metodene er en del av pakken java.lang.Enum . Ordinal () -metoden returnerer rekkefølgen på oppregningskonstanten basert på konstantens indeks.
Verdiene () -metoden returnerer alle verdiene som er til stede i opptellingen. ValueOf (String) -metoden returnerer oppregningskonstanten for inngangsstrengen. Hvis den angitte strengen ikke samsvarer med konstanten, vil den kaste IllegalArgumentException.
Nedenfor er programmeringseksemplet der vi har brukt det samme eksemplet (som enum søkeordeksempel) og implementert konseptet med alle de tre metodene.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Produksjon:
Enum Constructor
Enum (som det også er en klasse) støtter konstruktør for å formidle data under opprettelsen av teller eller også kjent som enum-konstanter.
Hovedegenskapene til en enumkonstruktør er at de er private eller private pakker. Dette betyr at de enten er tilgjengelige i en klasse eller i en pakke.
La oss se eksemplet nedenfor. Her har vi brukt både dvs. metode og konstruktøren. Først og fremst har vi opprettet en oppregning med navnet “spillere” som har fem oppteller og feltet.
Deretter har vi en konstruktør og en metode som vil returnere antall løp scoret av hver spiller eller teller eller en konstant.
Deretter har vi hovedklassen der vi har brukt for hver sløyfe med metoden values () for å lagre og itere hver teller. Vi har også kalt metoden for antall løp scoret av hver spiller.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Produksjon:
ofte stilte spørsmål
Q # 1) Hva er forskjellen mellom Iterator og Enumeration i Java?
Svar: Nedenfor er forskjellen mellom Iterator og Enumeration.
Iterator | Oppregning |
---|---|
Det er en generisk markør som brukes til å gjenta elementer, og den gjelder for alle samlingsklasser. | Det er ikke en generisk markør fordi den bare gjelder for eldre klasser som Enum. Les bare tillatelse for en samlingskurs. |
Noen av metodene er hasNext (), neste () for iterasjon. | Noen av metodene er hasMoreElements (), nextElement () for iterasjon. |
Vi kan fjerne elementet i en samling ved hjelp av iterator. | Vi kan ikke fjerne elementet i en samling ved hjelp av Enumeration fordi det bare har lesetillatelse. |
Spørsmål 2) Hvordan Enum støtter arv?
Svar: Afterall Enum er også en klasse i Java, så den må støtte Arv som er et grunnleggende prinsipp for OOPS. Alle oppregninger utvider java.lang.Enum-klassen. Ettersom en klasse bare kan utvide en enslig forelder, utvider ikke Enum-klassen noen andre.
ToString () som er en del av Enum-klassen (forklart i avsnitt Enum-metoden) blir overstyrt i java.lang.Enum-klassen.
Konklusjon
I denne opplæringen har vi diskutert oppregningene, opptellerne, Java Enum-klassen og oppslagsordet med passende eksempler og forklaringer der det er nødvendig. Vi har også gitt et innblikk i viktige metoder knyttet til Enum-klassen med enum-feltet.
Et innblikk i konstruktøren, enum med if-else, bryter og løkker er gitt.
=> Besøk her for å lære Java fra bunnen av.
Anbefalt lesing
- Java-skanner klasseveiledning med eksempler
- Java Integer og Java BigInteger Class med eksempler
- Java Float Tutorial med programmeringseksempler
- Hva er Java Vector | Java Vector Class Tutorial med eksempler
- TreeMap In Java - Veiledning med Java TreeMap-eksempler
- Java Double - Veiledning med programmeringseksempler
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- C # -konsepter: Constructor, Destructor, Static Class, Struct & Enum