De Oppregning i er en måte å definere en klasse med faste og navngitte konstanter med deres respektive ved hjelp av nøkkelordet enum. I dette ' Java Enum Tutorial ”Artikkel, vil vi lære ådefinere Oppregning sammen medeksempler for bedre forståelse.
sortere int array c ++
- Hva er oppregning?
- Hvorfor trenger vi oppregning?
- Forskjeller mellom Enum og Class
- Praktiske eksempler på Enum
- Fordeler med Enum
- Enum Usecase: Rock, Papir, saksspill
Hva er oppregning?
Java Enums er klasser som har et fast sett med konstanter eller variabler som ikke har en tendens til å endres. Oppregningen i Java oppnås ved hjelp av nøkkelordet enum. Java enum konstanter er statisk og endelig implisitt. Enum-funksjonen er tilgjengelig siden JDK versjon 1.5.
Hvorfor trenger vi oppregning?
enum forbedrer typesikkerhet ved kompileringstidskontroll for å unngå feil ved kjøretid ved å unngå kjeleplatekode. For eksempel, hvis du må velge en mulighet av det minste antall tilgjengelige alternativer, si,
Jobb Type: (Kontrakt / Midlertidig / Fast)
Da ville det beste alternativet være å bruke en enum. Fordi enum kan enkelt brukes i bryteren. enum kan krysses. enum kan ha felt, konstruktører og metoder. Derfor, øker det kompileringstidskontrollen og unngår feil på grunn av innlevering av ugyldige konstanter, ettersom du allerede har dokumentert hvilke verdier som er lovlige som skal brukes.
Forskjeller mellom Enum og Class
Selv om en klasse og enum har lignende funksjonalitet i Java-miljø, er de forskjellige i noen få aspekter. La oss diskutere forskjellene
Enum | Klasse |
Enum-konstanter kan ikke overstyres | Klassekonstanter kan overstyres |
Enum støtter ikke oppretting av objekter | Klasse støtter opprettelsen av objekter |
Enum kan ikke utvide andre klasser | En klasse kan utvide andre klasser |
enum cet redskapsgrensesnitt | En klasse kan implementere grensesnitt |
Praktiske eksempler på Enum
For å forstå enum på en mye bedre måte, la oss utføre noen praktiske eksempler basert på det følgende.
- Definere oppregning i Java
- Enum brukt i Switch Case
- Arv ved bruk av enum
- Enum med tilpassede verdier
- Enum i if-else-if uttalelser
- Ulike metoder brukt med enum
Definere oppregning i Java
Enum kan erklæres enten inne i en klasse eller utenfor en cla. Men det kan ikke erklæres i noen metode. La oss ta et lite eksempel for å forstå syntaksen, definisjonen og erklæringen.
Syntaks:
enum navn {konstanter}
I dette eksemplet har vi erklært hoved() metode innsiden enum
pakke definisjon offentlig klasse Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}
// Ouput
KTM
I dette eksemplet er hoved() metoden er erklært utenfor av enum.
pakke definisjon enum Color {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}
//Produksjon:
YAMAHA
Enum brukt i Switch Case
Oppregning kan også brukes i en bryteruttalelse. Det er viktig at alle saksoppgavene må bruke konstanter fra samme enum som brukt av bryteruttalelsen. La oss sjekke et eksempel basert på dette.
Her vil vi erklære en enum med ukedagene som elementene, og vi vil overføre dataene i form av en streng for å skrive ut dataene i den matchende saken.
pakke byttet enum Dag {SUNDAY, MONDAY, TUESDAY, ONSDAY, THURSDAY, FRIDAY, LATURDAY} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case MANDAG: System.out.println ('Hei, i dag er mandag') pause sak TIRSDAG: System.out.println ('Hei, i dag er tirsdag') pause sak ONSDAG: System.out.println ('Hei, i dag er onsdag ') break case TORSDAG: System.out.println (' Hei, i dag er torsdag ') break case FREDAG: System.out.println (' Hello, Today is Friday. ') break case LØRDAG: System.out.println (' Hei, i dag er din helg ') pause sak SØNDAG: System.out.println (' Hei, I dag er en ferie ') pause standard: System.out.println (' Vennligst skriv inn en gyldig dag. ') Pause}} offentlig statisk ugyldig hoved (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}
//Produksjon:
Hei, i dag er detmandag
Arv ved bruk av enum
I utgangspunktet noe enum er representert som en klasse som utvider den abstrakte klassen java.lang. Enum og har flere statiske medlemmer. Derfor er en enum kan ikke utvide noen annen klasse eller enum det er ikke flere arv . La oss utføre et eksempel for å forstå det på en bedre måte.
Her vil vi arve operativsystemet basert på telefonprodusenten.
pakke arv import java.util.ArrayList import java.util.List offentlig klasse Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) for (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} statisk grensesnitt HTTPMethodConvertible {public String getHTTPMethodType ()} statisk enum LibraryEnum implementerer HTTPMethodConvertible {FIRST ('Google Pixel) 'Huawei'), TREDJE ('Apple 11 Pro') streng httpMethodType LibraryEnum (strengtelefon) {httpMethodType = telefon} offentlig streng getHTTPMethodType () {retur httpMethodType}} statisk enum ClientEnum implementerer HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}
//Produksjon:
Google Pixel
Android One
Enum med tilpassede verdier
Enums har sine egne strengverdier som standard, vi kan også tilordne noen egendefinerte verdier til enums. La oss se på eksemplet nedenfor.
enum Traffic {RED (“STOP”), ORANGE (“WAIT”), GREEN (“GO”)}
I eksemplet ovenfor kan vi se at Traffic enum har tre medlemmer. Nemlig
RØD APPELSIN og GRØNN med har sine egne forskjellige tilpassede verdier STOPP, VENT og GÅ henholdsvis.
Nå for å bruke samme type enum i kode forventes det at vi følger noen punkter som er:
- Vi må skape parameterisert konstruktør for denne enumklassen. Fordi vi vet det enum klassens objekt kan ikke opprettes eksplisitt, så for initialisering bruker vi parameteriserte konstruktører.
- De bygger kan ikke være publikum eller beskyttet den må ha privat eller misligholde modifikatorer. Hvis vi oppretter offentlig eller beskyttet, vil det tillate initialisering av mer enn ett objekt som er helt imot enum funksjonalitet.
- Vi må lage en getter-metode for å få verdien av enums.
La oss gjennomføre et program basert på dette.
pakke trafikk enum TrafficSignal {RED ('STOPP'), GRØNN ('GO'), ORANGE ('WAIT') privat String handling offentlig String getAction () {return this.action} privat TrafficSignal (String handling) {this.action = handling}} offentlig klasse Edureka {public static void main (String args []) {TrafficSignal [] signals = TrafficSignal.values () for (TrafficSignal signal: signals) {System.out.println ('name:' + signal.name () + 'handling:' + signal.getAction ())}}
//Produksjon:
navn: RØD handling: STOPP
navn: GRØNN handling: GO
hanne: ORANGE handling: VENT
Enum i if-else-if uttalelser
La oss nå utføre et program basert på enum i if-else-if uttalelser. Her vil vi finne retningen for traversal ved å overføre verdiene av retninger som er tilgjengelige i enum.
pakke Veibeskrivelse enum Veibeskrivelse {EAST, WEST, NORTH, SOUTH} public class Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Retning: Øst')} annet hvis (dir == Veibeskrivelse.VEST) {System.out.println ('Retning: Vest')} ellers hvis (dir == Veibeskrivelse.NORTH) {System.out.println ('Retning : Nord ')} annet {System.out.println (' Retning: Sør ')}}}
//Produksjon:
Siksjon: Nord
Ulike metoder brukt med enum
Verdier (): Når du oppretter en enum, vil Java-kompilator internt legger til verdier () metode. Denne metoden returnerer en array inneholder alle verdiene til enum.
// Syntaks:
offentlige statiske enum-type [] verdier ()
Vi vil finne ut indeksverdien til et bestemt element i en matrise.
pakkeverdier enum Color {RED, GREEN, BLUE} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values () for (Color col: arr) {System.out.println ( kol + 'ved indeks' + kol. ordinal ())} System.out.println (Color.valueOf ('RED'))}}
//Produksjon:
servicenow tutorial for nybegynnere pdf
RØD ved indeks 0
GRØNN ved indeks 1
BLÅ ved indeks 2
NETT
Verdien av(): Dettemetoden brukes til å returnere oppregningskonstanten hvis verdi er lik gått som et argument mens du kaller denne metoden.
// Syntaks:
offentlig statisk enum-type valueOf (strengstreng)
Her finner vi kostnadene for en bestemt telefon basert på inngangen vi sender til strengen.
pakkeverdier av enum Mobile {Samsung (1099), Apple (1250), Google (1325) int price Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('CellPhone List:') for (Mobile m: Mobile.values ()) {System.out.println (m + 'kostnader' + m.showPrice () + 'dollars' )} Mobil ret ret = Mobile.valueOf ('Samsung') System.out.println ('Valgt:' + ret)}}
//Produksjon:
Samsung koster 1099 dollar
Apple koster 1250 dollar
Google koster 1325 dollar
Valgt: Samsung
Ordinær (): Java-tolk legger til ordinær () metode internt når den skaper en enum. Ordinal () -metoden returnerer indeks av enumverdien.
// Syntaks:
offentlig endelig ordinær ()
Her vil vi finne ut indeksverdien til et bestemt element i en matrise. og også posisjonen til kirsebærfrukten.
Package ordinal enum Fruits {Apple, Banana, Cherry, Date, Elderberry} enum Vegetables {Gulrot, rødbeter, bønner, tomat, løk} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. verdier () for (Frukt fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Frukt f1, f2, f3 f1 = Frukt. Eple f2 = Frukt. Kirsebær f3 = Frukt. Eple hvis (f2.compareTo (f1)> 0) {System.out.println (f2 + 'kommer etter' + f1)} Grønnsaker v1 = Grønnsaker. rødbeter hvis (f1.equals (v1)) {System.out.println (' Stemmer ikke') } } }
//Produksjon:
Apple: 0
Banan: 1
Kirsebær: 2
Dato: 3
Elderberry: 4
Cherry kommer etter Apple
Fordeler med Enum
- Enum i Java forbedres type sikkerhet
- Enum er designet for å være lett brukbar i bytte saker
- Enum kan være krysset
- Enum kan ha felt, metoder, og konstruktører
- Enum kan implementere grensesnitt
- Enum kan ikke utvide en klasse fordi internt strekker det seg Enum klasse
Enum Usecase: Rock, Paper, Scissors Game
Vi vil bruke enum i Java for å lage barndomsspillet vårt, steinpapir og saks . Følgende kode forklarer hvordan.
pakke Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPIR, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = new Scanner (System.in) System.out.println ('nLa oss begynne ... n') mens (! gameOver) {System.out.printf ('% nSississ-Paper-Stonen') boolean validInput do {System.out.print ('nDin tur (Vennligst skriv inn s for en saks, p for papir, t for stein, q å slutte): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} annet hvis (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} annet hvis (inChar == 'p') {playerMove = HandSign.PAPER} annet hvis (inChar == 't') {playerMove = HandSign.STONE} annet {System.out.println ( 'nVennligst sjekk inngangen og prøv igjen! n') validInput = false}} mens (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt's My Turn: SCISSORn')} ellers hvis (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nIt's My turn: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nIt's My turn: STONEn')} hvis (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} annet hvis (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nSississ kutter papir , Jeg vant! N ') ++ numComputerWon} annet hvis (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper wraps stone, I won! N ') ++ numComputerWon} annet hvis (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone bryter saks, jeg vant! n') ++ numComputerWon} ellers {System.out.println ('nCongratulations. ..! Du vant! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nAntall forsøk: '+ numTrials) System.out.printf (' Jeg vant% d (%. 2f %%) . Du vant% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Bye !, Håper du likte ..! ' )}}
//Produksjon:
La oss starte...
Saks-papir-stein
Din tur (Vennligst skriv inn s for en saks, p for papir, t for stein, q for å slutte):
s
Det er min tur: STEIN
Stone bryter saks, jeg vant!
Saks-papir-stein
Din tur (Vennligst skriv inn s for en saks, p for papir, t for stein, q for å slutte):
hva
Antall forsøk: 1 Jeg vant 1 (100,00%). Du vant 0 (0,00%).
Farvel !, Håper du likte ..!
Med dette kommer vi til en slutt på denne Java Enum Tutorial. Jeg håper du har forstått Enum i Java og implementeringen av den gjennom noen sanntidseksempler.
Nå som du har forstått det enum grunnleggende gjennom denne 'Java Enum Tutorial' sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Edurekas Java J2EE- og SOA-opplærings- og sertifiseringskurs er designet for studenter og fagpersoner som ønsker å være Java-utvikler. Kurset er designet for å gi deg et forsprang i Java-programmering og trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Vår .
Har du spørsmål til oss? Nevn det i kommentarfeltet i denne “Java Enum Tutorial” -bloggen, så kommer vi tilbake til deg så snart som mulig.