V tej vadnici bomo spoznali enume v Javi. S pomočjo primerov se bomo naučili ustvarjati in uporabljati enume in enum tečaje.
V Javi je enum (kratica za enumeration) vrsta, ki ima fiksni nabor konstantnih vrednosti. Mi uporabljamo enum
besedo, naj ugotovi enums. Na primer
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
Tu smo ustvarili enum z imenom Velikost. Vsebuje fiksne vrednosti SMALL, SREDNJA, LARGE in EXTRALARGE.
Te vrednosti v oklepajih se imenujejo enum konstante (vrednosti).
Opomba: Konstante naštevanja so običajno predstavljene z velikimi črkami.
Primer 1: Java Enum
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )
Izhod
MALO SREDNJE
Kot lahko vidimo iz zgornjega primera, za dostop do vrednosti konstant uporabljamo ime enum.
Prav tako lahko ustvarimo spremenljivke vrst enum. Na primer
Size pizzaSize;
Tu je pizzaSize spremenljivka tipa Size. Dodeliti ga je mogoče samo s 4 vrednostmi.
pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;
Primer 2: Java Enum s stavkom switch
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )
Izhod
Naročil sem pico srednje velikosti.
V zgornjem programu smo ustvarili enum tip Velikost. Nato smo razglasili spremenljivo velikost pizzaSize tipa Size.
Tu lahko spremenljivko pizzaSize dodelite samo s 4 vrednostmi (SMALL, SREDNJA, LARGE, EXTRALARGE).
Upoštevajte izjavo,
Test t1 = new Test(Size.MEDIUM);
Poklical bo Test()
konstruktor znotraj razreda Test. Zdaj je spremenljivki pizzaSize dodeljena srednja konstanta.
Na podlagi vrednosti se izvede eden od primerov stavka case switch.
Enum razred v Javi
V Javi se štejejo vrste enum kot posebna vrsta razreda. Predstavljen je bil z izdajo Java 5.
Razred enum lahko vključuje metode in polja, tako kot običajni razredi.
enum Size ( constant1, constant2,… , constantN; // methods and fields )
Ko ustvarimo enum razred, bo prevajalnik ustvaril primerke (predmete) vsake konstante enum. Tudi vsa enum konstanta je vedno public static final
privzeto.
Primer 3: Razred Java Enum
enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )
Izhod
Velikost pice je majhna
V zgornjem primeru smo ustvarili enum razred Velikost. Ima štiri konstante MALO, SREDNJO, VELIKO in VELIKO.
Ker je Velikost razred enum, prevajalnik samodejno ustvari primerke za vsako konstanto enum.
Tu znotraj main()
metode smo za klic getSize()
metode uporabili primerek SMALL .
Opomba : Tako kot običajni razredi lahko tudi enumski razred vključuje konstruktorje. Če želite izvedeti več o tem, obiščite Java enum constructor.
Metode razreda Java Enum
V razredih naštevanja je nekaj vnaprej določenih metod, ki so na voljo za uporabo.
1. Java Enum zaporedni ()
ordinal()
Metoda vrne položaj konstanto oštevilčevanja. Na primer
ordinal(SMALL) // returns 0
2. Enum compareTo ()
compareTo()
Metoda primerja ENUM konstante glede na njihovo zaporedna vrednost. Na primer
Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)
3. Enum toString ()
toString()
Metoda vrne zastopanost niz o ENUM konstant. Na primer
SMALL.toString() // returns "SMALL"
4. Ime števila ()
name()
Metoda vrne opredeljeno ime za oštevilčevanja konstanto v obliki niza. Vrnjena vrednost name()
metode je final
. Na primer
name(SMALL) // returns "SMALL"
5. Java Enum valueOf ()
The valueOf()
method takes a string and returns an enum constant having the same string name. For example,
Size.valueOf("SMALL") // returns constant SMALL.
6. Enum values()
The values()
method returns an array of enum type containing all the enum constants. For example,
Size() enumArray = Size.value();
Why Java Enums?
In Java, enum was introduced to replace the use of int constants.
Suppose we have used a collection of int
constants.
class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )
Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.
So, instead of using int constants, we can simply use enums. For example,
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
This makes our code more intuitive.
Also, enum provides compile-time type safety.
If we declare a variable of the Size type. For example,
Size size;
Tu je zagotovljeno, da bo spremenljivka imela eno od štirih vrednosti. Zdaj, če poskusimo prenesti vrednosti, ki niso te štiri vrednosti, bo prevajalnik ustvaril napako.