logo

Java enumi

The Enum u Javi je tip podataka koji sadrži fiksni skup konstanti.

Može se koristiti za dane u tjednu (NEDJELJA, PONEDJELJAK, UTORAK, SRIJEDA, ČETVRTAK, PETAK i SUBOTA), smjerove (SJEVER, JUG, ISTOK i ZAPAD), godišnje doba (PROLJEĆE, LJETO, ZIMA i JESEN ili JESEN) ), boje (CRVENO, ŽUTO, PLAVO, ZELENO, BIJELO i CRNO) itd. Prema konvencijama o imenovanju u Javi, sve konstante trebamo imati velikim slovima. Dakle, imamo enum konstante ispisane velikim slovima.

Java enume se mogu smatrati klasama koje imaju fiksni skup konstanti (varijabla koja se ne mijenja). Java enum konstante su statične i konačne implicitno. Dostupan je od JDK 1.5.

brisanje iz stabla binarnog pretraživanja

Enume se koriste za stvaranje vlastitog tipa podataka poput klasa. The nabrajanje tip podataka (također poznat kao Enumerated Data Type) koristi se za definiranje enuma u Javi. Za razliku od C/C++, enum u Javi je više snažan . Ovdje možemo definirati enum unutar ili izvan klase.

Java Enum interno nasljeđuje Enum klasa , tako da ne može naslijediti nijednu drugu klasu, ali može implementirati mnoga sučelja. U Java enumu možemo imati polja, konstruktore, metode i glavne metode.

Bodovi koje treba zapamtiti za Java Enum

  • Enum poboljšava sigurnost tipa
  • Enum se lako može koristiti u switchu
  • Enum se može prijeći
  • Enum može imati polja, konstruktore i metode
  • Enum može implementirati mnoga sučelja, ali ne može proširiti niti jednu klasu jer interno proširuje klasu Enum
Java Enum točke

Jednostavan primjer Java enuma

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Testirajte sada

Izlaz:

 WINTER SPRING SUMMER FALL 

Pogledajmo još jedan primjer Java enuma gdje koristimo metode value(), valueOf() i ordinal() Java enuma.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Izlaz:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Napomena: Java kompilator interno dodaje metode values(), valueOf() i ordinal() unutar enuma tijekom kompilacije. Interno stvara statičnu i konačnu klasu za enum.

Koja je svrha metode values() u enumu?

Java prevoditelj interno dodaje metodu values() kada kreira enum. Metoda values() vraća niz koji sadrži sve vrijednosti enuma.

Koja je svrha metode valueOf() u enumu?

Java prevoditelj interno dodaje metodu valueOf() kada kreira enum. Metoda valueOf() vraća vrijednost zadane konstante enum.

odabir vrste

Koja je svrha metode ordinal() u enumu?

Java kompilator interno dodaje metodu ordinal() kada kreira enum. Metoda ordinal() vraća indeks enum vrijednosti.


Definiranje Java enuma

Enum se može definirati unutar ili izvan klase jer je sličan klasi. Točka i zarez (;) na kraju enum konstanti nisu obavezne. Na primjer:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Ili,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Obje definicije Java enuma su iste.

Primjer Java enuma: definirano izvan klase

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Testirajte sada

Izlaz:

 WINTER 

Primjer Java enuma: definirano unutar klase

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Testirajte sada

Izlaz:

 WINTER 

Java Enum primjer: glavna metoda unutar Enuma

Ako metodu main() stavite unutar enuma, enum možete pokrenuti izravno.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Izlaz:

što je abecedni broj
 WINTER 

Inicijaliziranje specifičnih vrijednosti za enum konstante

Enum konstante imaju početnu vrijednost koja počinje od 0, 1, 2, 3 itd. No, možemo inicijalizirati određenu vrijednost enum konstantama definiranjem polja i konstruktora. Kao što je ranije navedeno, Enum može imati polja, konstruktore i metode.

Primjer specificiranja početne vrijednosti za enum konstante

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Testirajte sada

Izlaz:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Konstruktor tipa enum je privatan. Ako ne deklarirate privatno, kompilator interno stvara privatni konstruktor.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Interni kod koji je generirao prevodilac za gornji primjer tipa enum

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Možemo li stvoriti instancu Enum novom ključnom riječi?

Ne, jer sadrži samo privatne konstruktore.

Možemo li imati apstraktnu metodu u Enumu?

Da naravno! možemo imati apstraktne metode i možemo osigurati implementaciju tih metoda.


Java Enum u naredbi switch

Možemo primijeniti enum na naredbu switch kao u danom primjeru:

Primjer primjene Enuma na naredbu switch

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Testirajte sada

Izlaz:

 monday