java enum java enumeration tutorial with examples
Denne vejledning vil uddybe Java Enum-klassen og konstruktøren. Vi lærer at bruge Enum gennem forskellige Java-programmeringseksempler:
Dette er en speciel klasse, hvis forklaring vil blive givet i detaljer. Et indblik i Java Enum-klassen gives sammen med listen over metoder, som den understøtter.
Tilstrækkelige programmer, der implementerer Java enum-begreberne og nogle ofte stillede spørgsmål, der kan blive stillet under interviews, er inkluderet i denne vejledning for at gøre det let for dig.
=> Tjek her for at se Java-træningsserien for alle.
Hvad du vil lære:
Java-optælling
En Java-optælling er intet andet end en liste over instansvariabler, metoder eller konstruktører. Disse er en gruppe konstanter. Begrebet optælling blev introduceret i JDK5. Standardegenskaben for hver optællingskonstant er offentlig, statisk og endelig.
enum Nøgleord
Tælling oprettes ved hjælp af et nøgleord kaldet “ enum ”.
Nedenfor er syntaksen, hvormed vi kan oprette en optælling.
Syntaks:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
Bemærk: enum kan kun defineres inden for en topklasse eller interface eller i en statisk sammenhæng. Det skal ikke være inde i en metode.
enum Eksempel
I dette eksempel vil vi initialisere fire tællere, dvs. spade, hjerte, diamant og klub, der tilhører en opregnet type kaldet kort.
Derefter vil vi prøve at udskrive hver af disse tællere.
/* * 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 klasse
En ting, du skal have bemærket i ovenstående eksempel (se kommentarer) er, at vi ikke brugte en “Nyt søgeord” mens du instantierer. Selvom optællingerne også definerer en klasse Enum og konstruktørerne, bruger de ikke et nyt nøgleord.
Vi kan bruge de tællere, der er defineret på samme måde som den primitive. Enum er en generisk klasse, og alle opregningerne arver Enum.
Syntaks:
// E er optællingstypen.
klasse Enum
Sådan bruges Enum i Java
Lad os se, hvordan vi bruger Enum i forskellige scenarier ved hjælp af Java-eksempler:
Inde i en klasse
Enum kan erklæres inden for eller uden for (enum nøgleordeksempel) en klasse, men ikke inde i en metode. Her vil vi demonstrere, hvordan enum erklæres i en klasse.
I nedenstående eksempel , vi har oprettet en optælling inde i en klasse, og så har vi hentet værdien eller tælleren ved hjælp af en referencevariabel 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:
Itererende Enum gennem sløjfer
Her vil vi diskutere, hvordan vi kan løbe gennem en enum. Vi har erklæret optælling med fire tællere (uden for en klasse). Derefter har vi initialiseret a for hver sløjfe (inde i en klasse) og forsøgt at hente værdien af tællerne.
/* * 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:
dot net interview spørgsmål og svar til erfarne
I if-else
I nedenstående program har vi oprettet en optælling med tre forskellige tællere og derefter gemt tælleren i referencevariablen for en af de angivne tællere.
Derefter har vi startet ef-betingelseskontrollen, hvor vi har implementeret to betingelser specificeret med OR, så hvis en af disse betingelser er opfyldt, vil den udskrive den erklæring, der er angivet i if-betingelsen.
Ellers udskriver den erklæring, der er angivet i den anden tilstand.
/* * 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-erklæring
I nedenstående program har vi oprettet en optælling med fire tællere. Derefter lagrede vi en af tællerne i referencevariablen. Derefter initialiserede vi en Switch-erklæring og kontrollerede hver af disse tællere.
Ved forekomsten af den pågældende tæller vil den udskrive den erklæring, der er specificeret i det særlige tilfælde.
/* * 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 felt og metoder
Enum felt
Dette afsnit forklarer enumfeltet detaljeret. Vi kan tilføje felter til Java enum, og hver tæller får disse felter. Feltværdien skal tildeles konstruktøren af enum.
I nedenstående syntaks kan vi se, at der er defineret en optælling med tre tællere. Ved siden af hver tæller har vi defineret et felt af typen int. ( For eksempel. - (3), (2) og (1) henholdsvis).
Dette summerer, at Java enum har en konstruktør, der tager en int. Denne konstruktør indstiller int-feltet. Når en tæller er defineret, sendes denne int-værdi (angivet for den tæller) 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; } }
Bemærk: For eksempel i Enum-feltet henvises til afsnittet “ Enum Constructor ”.
Enum-metoder
# 1) navn ()
public final String name () - Returnerer navnet på den påkaldende konstant (uændret eller uændret).
# 2) er lig med ()
offentlige endelige boolske lig (Objekt andet) - Returnerer sandt, hvis obj og det påkaldende objekt refererer til den samme konstant.
# 3) toString
public String toString () - Returnerer navnet på opkaldskonstanten. Matcher ikke nødvendigvis det navn, der er brugt i optællingens erklæring.
# 4) klon
beskyttet endelig objektklon ()
kaster CloneNotSupportedException - Dette betyder, at enum kaster en undtagelse, når de forsøges at klone.
# 5) hashCode ()
public final int hashCode () - Returnerer hash-koden for det påkaldende objekt.
# 6) færdiggør ()
beskyttet endeligt tomrum finalize () - enum-klasse kan ikke have færdige metoder. Ingen returværdi.
# 7) CompareTo ()
public final int comparTo (E obj) - Dette sammenligner enummet med det specificerede objekt obj. Det returnerer negativt, hvis objektet er mindre end det angivne objekt. Det returnerer positivt, hvis dette objekt er større end det angivne objekt obj, og det returnerer nul, hvis det angivne obj er lig med dette objekt.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Returnerer den optællingstype (også kendt som enum deklarerer klasse), som den påkaldende konstant er medlem af.
# 9) ordinal (), værdier () og valueOf ()
Alle disse metoder er en del af pakken java.lang.Enum . Ordinal () -metoden returnerer rækkefølgen af optællingskonstanten baseret på konstantens indeks.
Metoden værdier () returnerer alle de værdier, der er til stede i optællingen. Metoden valueOf (String) returnerer optællingskonstanten for inputstrengen. Hvis den angivne streng ikke matches med konstanten, kaster den IllegalArgumentException.
Nedenfor er programmeringseksemplet, hvor vi har brugt det samme eksempel (som enum-nøgleordeksempel) og implementeret konceptet med alle de tre metoder.
/* * 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 (da det også er en klasse) understøtter konstruktør til at videregive data under oprettelsen af tællere eller også kendt som enum-konstanter.
Enumkonstruktørens vigtigste egenskab er, at de er private eller private-pakke. Dette betyder, at de enten er tilgængelige inden for en klasse eller inden for en pakke.
Lad os se nedenstående eksempel. Her har vi brugt både dvs. metoden og konstruktøren. Først og fremmest har vi oprettet en optælling med navnet “spillere”, der har fem tællere og feltet.
Derefter har vi en konstruktør og en metode, der returnerer antallet af løb, der er scoret af hver spiller, en tæller eller enumskonstant.
Derefter har vi den hovedklasse, som vi har brugt til hver sløjfe med værdier () -metoden til at gemme og gentage hver tæller. Vi har også kaldt metoden til antallet af løb scoret af 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'); } }
Produktion:
Ofte stillede spørgsmål
Q # 1) Hvad er forskellen mellem Iterator og Enumeration i Java?
Svar: Nedenfor er forskellen mellem Iterator og Enumeration.
Iterator | Optælling |
---|---|
Det er en generisk markør, der bruges til at gentage elementer, og den gælder for alle samlingsklasser. | Det er ikke en generisk markør, fordi den kun gælder for ældre klasser som Enum. Læs kun tilladelse til en samlingsklasse. |
Nogle af metoderne er hasNext (), næste () til iteration. | Nogle af metoderne er hasMoreElements (), nextElement () til iteration. |
Vi kan fjerne elementet i en samling ved hjælp af iterator. | Vi kan ikke fjerne elementet i en samling ved hjælp af Enumeration, fordi det kun har læsetilladelse. |
Spørgsmål nr. 2) Hvordan Enum understøtter arv?
Svar: Afterall Enum er også en klasse i Java, så det skal understøtte arv, som er et grundlæggende princip i OOPS. Alle optællinger udvider klassen java.lang.Enum. Da en klasse kun kan udvide en enlig forælder, udvider Enum-klassen ikke nogen anden.
ToString (), som er en del af Enum-klassen (forklaret i sektionen Enum-metode), tilsidesættes i java.lang.Enum-klassen.
Konklusion
I denne vejledning har vi diskuteret optællinger, tællere, Java Enum-klassen og enum-nøgleordet med passende eksempler og forklaringer, hvor det er nødvendigt. Vi har også givet et indblik i de vigtige metoder, der er forbundet med Enum-klassen med enum-feltet.
Der er givet et indblik i konstruktøren, enum med if-else, switch og sløjfer.
=> Besøg her for at lære Java fra bunden.
Anbefalet læsning
- Java Scanner-klassevejledning med eksempler
- Java-heltal og Java BigInteger-klasse med eksempler
- Java Float Tutorial med programmeringseksempler
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler
- TreeMap I Java - Vejledning med Java TreeMap-eksempler
- Java Double - Vejledning med programmeringseksempler
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- C # -koncepter: Konstruktør, Destructor, Statisk klasse, Struct & Enum