java enum java enumeration tutorial with examples
Denna handledning kommer att utarbeta Java Enum-klassen och konstruktören. Vi lär oss hur man använder Enum genom olika Java-programmeringsexempel:
Detta är en specialklass vars förklaring kommer att ges i detalj. En inblick i Java Enum-klassen kommer att ges tillsammans med listan över metoder som den stöder.
Tillräckliga program som implementerar Java enum-koncepten och några vanliga frågor som kan ställas under intervjuerna ingår i denna handledning för att göra det lättare för dig.
=> Kolla här för att se Java Training Series för alla.
Vad du kommer att lära dig:
Java-uppräkning
En Java-uppräkning är inget annat än en lista med instansvariabler, metoder eller konstruktörer. Dessa är en grupp konstanter. Begreppet uppräkning introducerades i JDK5. Standardegenskapen för varje uppräkningskonstant är offentlig, statisk och slutlig.
enum Nyckelord
Uppräkning skapas med hjälp av ett nyckelord som heter “ enum ”.
Nedan följer syntaxen med vilken vi kan skapa en uppräkning.
Syntax:
enum enumerated_type_name
{
enumerator1, enumerator2, ... enumeratorN;
}
Notera: enum kan definieras endast i en toppklass eller gränssnitt eller i ett statiskt sammanhang. Det borde inte vara inuti en metod.
enum Exempel
I det här exemplet ska vi initialisera fyra räknare, dvs. spade, hjärta, diamant och klubb som tillhör en uppräknad typ som kallas kort.
Sedan kommer vi att försöka skriva ut var och en av dessa uppräkare.
/* * 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); } }
Produktion:
Enum-klass
En sak du måste ha märkt i exemplet ovan (se kommentarer) är att vi inte använde en “Nytt sökord” samtidigt instansera. Även om uppräkningarna definierar en klass Enum och konstruktörerna också, använder de inte ett nytt nyckelord.
Vi kan använda de räknare som definieras på samma sätt som de primitiva. Enum är en generisk klass och alla uppräkningar ärver Enum.
Syntax:
// E är uppräkningstypen.
klass Enum
Hur man använder Enum i Java
Låt oss se hur man använder Enum i olika scenarier med hjälp av Java-exempel:
Inuti en klass
Enum kan deklareras inom eller utanför (exempel på enum-nyckelord) en klass men inte i en metod. Här kommer vi att visa hur enum förklaras i en klass.
I exemplet nedan , vi har skapat en uppräkning i en klass och sedan har vi hämtat värdet eller uppräkaren med hjälp av en referensvariabel 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); } }
Produktion:
Iterera Enum genom loopar
Här kommer vi att diskutera hur vi kan gå igenom ett enum. Vi har förklarat uppräkning med fyra uppräkare (utanför en klass). Sedan har vi initierat a för varje slinga (inuti en klass) och försökt hämta värdet på räknarna.
/* * 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); } } }
Produktion:
hur kör jag en .jar-fil
I if-else
I programmet nedan har vi skapat en uppräkning med tre olika uppräkare och sedan lagrat uppräknaren i referensvariabeln för en av de angivna uppräknarna.
Sedan har vi startat om-villkorskontrollen där vi har implementerat två villkor som anges med ELLER så att om ett av dessa villkor är uppfyllt kommer det att skriva ut det uttalande som anges i if-villkoret.
Annars kommer den att skriva ut det uttalande som anges i det andra villkoret.
/* * 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'); } } }
Produktion:
I Switch Statement
I programmet nedan har vi skapat en uppräkning med fyra uppräkare. Sedan lagrade vi en av räknarna i referensvariabeln. Därefter initierade vi ett Switch-uttalande och kontrollerade var och en av dessa uppräkare.
När den specifika uppräkaren inträffar kommer den att skriva ut det uttalande som anges i det aktuella fallet.
/* * 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; } } }
Produktion:
Enum fält och metoder
Enum-fältet
Detta avsnitt kommer att förklara enumfältet i detalj. Vi kan lägga till fält i Java-numret och varje uppräknare får dessa fält. Fältvärdet bör tilldelas konstruktören för enum.
I nedanstående syntax kan vi se att en uppräkning har definierats med tre uppräkare. Bredvid varje räknare har vi definierat ett fält av typen int. ( T.ex. - (3), (2) respektive (1)).
Detta summerar att Java enum har en konstruktör som tar en int. Den här konstruktören ställer in int-fältet. När en räknare definieras skickas det int-värdet (specificerat för den räknaren) till konstruktören.
Syntax:
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; } }
Notera: Till exempel i fältet Enum, se avsnittet ” Enum Constructor ”.
Enum-metoder
# 1) namn ()
public final Strängnamn () - Returnerar namnet på anropskonstanten (oförändrad eller oförändrad).
# 2) är lika med ()
public final boolean equals (Object other) - Returnerar true om obj och det anropande objektet hänvisar till samma konstant.
# 3) toString
public String toString () - Returnerar namnet på anropskonstanten. Matchar inte nödvändigtvis namnet som används i uppräkningsdeklarationen.
# 4) klon
skyddad slutlig objektklon ()
kastar CloneNotSupportedException - Detta innebär att enum kommer att kasta ett undantag när de försöks klona.
# 5) hashCode ()
public final int hashCode () - Returnerar hashkoden för det anropande objektet.
# 6) slutföra ()
skyddad slutgiltigt tomrum finalisera () - Enum-klass kan inte ha slutgiltiga metoder. Inget returvärde.
# 7) jämförTill ()
public final int CompareTo (E obj) - Detta jämför enummet med det angivna objektet obj. Det returnerar negativt om objektet är mindre än det angivna objektet. Det returnerar positivt om detta objekt är större än det angivna objektet obj och det returnerar noll om det angivna objektet är lika med det här objektet.
# 8) getDeclaringClass
public final Klass getDeclaringClass () - Returnerar uppräkningstypen (även känd som enum deklarerar klass) som anropskonstanten är medlem av.
# 9) ordinal (), värden () och valueOf ()
Alla dessa metoder är en del av paketet java.lang.Enum . Metoden ordinal () returnerar ordningen på uppräkningskonstanten baserat på konstantens index.
Metoden värden () returnerar alla värden som finns i uppräkningen. Metoden valueOf (String) returnerar uppräkningskonstanten för ingångssträngen. Om den angivna strängen inte matchas med konstanten kommer den att kasta IllegalArgumentException.
Nedan ges programmeringsexemplet där vi har använt samma exempel (som enum-nyckelordsexempel) och implementerat konceptet för alla de tre metoderna.
/* * 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')); } }
Produktion:
Enum Constructor
Enum (eftersom det också är en klass) stöder konstruktören att skicka data under skapandet av uppräkare eller även känd som enumkonstanter.
Enumkonstruktörens huvudsakliga egenskap är att de är privata eller privata paket. Detta innebär att de antingen är tillgängliga inom en klass eller i ett paket.
Låt oss se exemplet nedan. Här har vi använt både dvs metod och konstruktören. Först och främst har vi skapat en uppräkning med namnet “spelare” som har fem uppräkare och fältet.
Sedan har vi en konstruktör och en metod som returnerar antalet körningar gjorda av varje spelare, uppräkare eller enumkonstant.
Därefter har vi den huvudklass som vi har använt för varje slinga med metoden värden () för att lagra och upprepa varje räknare. Vi har också kallat metoden för antalet körningar som görs av varje spelare.
/* * 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'); } }
Produktion:
Vanliga frågor
F # 1) Vad är skillnaden mellan Iterator och Enumeration i Java?
Svar: Nedan anges skillnaden mellan Iterator och Enumeration.
Iterator | Uppräkning |
---|---|
Det är en generisk markör som används för att iterera element och den är tillämplig på alla insamlingsklasser. | Det är inte en generisk markör eftersom den endast är tillämplig på äldre klasser som Enum. Läs bara behörighet för en insamlingskurs. |
Några av metoderna är hasNext (), nästa () för iteration. | Några av metoderna är hasMoreElements (), nextElement () för iteration. |
Vi kan ta bort elementet i en samling med iterator. | Vi kan inte ta bort elementet i en samling med hjälp av Enumeration eftersom det bara har läsbehörighet. |
F # 2) Hur Enum stöder arv?
Svar: Afterall Enum är också en klass i Java, så det måste stödja Inheritance vilket är en grundläggande princip för OOPS. Alla uppräkningar utökar java.lang.Enum-klassen. Eftersom en klass bara kan förlänga en ensamstående förälder, utökar Enum-klassen inte någon annan.
ToString () som ingår i Enum-klassen (förklaras i avsnittet Enum-metod) åsidosätts i klassen java.lang.Enum.
Slutsats
I denna handledning har vi diskuterat uppräkningarna, uppräkarna, Java Enum-klassen och nyckelordet med lämpliga exempel och förklaringar där det behövs. Vi har också gett en inblick i viktiga metoder förknippade med Enum-klassen med enum-fältet.
En inblick i konstruktören, enum med if-else, switch och loopar har tillhandahållits.
=> Besök här för att lära dig Java från Scratch.
Rekommenderad läsning
- Java Scanner-klasshandledning med exempel
- Java-heltal och Java BigInteger-klass med exempel
- Java Float Tutorial med programmeringsexempel
- Vad är Java Vector | Java Vector Class Tutorial med exempel
- TreeMap In Java - Handledning med Java TreeMap-exempel
- Java Double - Handledning med programmeringsexempel
- Java Array Class Tutorial - java.util.Arrays Class med exempel
- C # -koncept: konstruktör, förstörare, statisk klass, struktur och enum