Java enum & enum Class (med exempel)

I den här handledningen lär vi oss om enums i Java. Vi lär oss att skapa och använda enums och enum-klasser med hjälp av exempel.

I Java är en enum (kort för uppräkning) en typ som har en fast uppsättning konstanta värden. Vi använder enumnyckelordet för att deklarera enums. Till exempel,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Här har vi skapat ett enum med namnet Storlek. Den innehåller fasta värden SMALL, MEDIUM, LARGE och EXTRALARGE.

Dessa värden inuti hängslen kallas enum konstanter (värden).

Obs: Enumkonstanterna representeras vanligtvis i versaler.

Exempel 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); ) )

Produktion

 LITEN MEDIUM

Som vi kan se från ovanstående exempel använder vi enumnamnet för att komma åt de konstanta värdena.

Vi kan också skapa variabler av enumtyper. Till exempel,

 Size pizzaSize;

Här är pizzaSize en variabel av storlekstypen. Den kan bara tilldelas med fyra värden.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Exempel 2: Java Enum med switch-uttalandet

 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(); ) )

Produktion

 Jag beställde en mellanstor pizza.

I ovanstående program har vi skapat enumtyp Storlek. Vi förklarade sedan en variabel pizzaSize av storlekstypen.

Här kan variabeln pizzaSize endast tilldelas med fyra värden (SMALL, MEDIUM, LARGE, EXTRALARGE).

Lägg märke till uttalandet,

 Test t1 = new Test(Size.MEDIUM);

Det kommer att ringa Test()konstruktören inuti testklassen. Nu tilldelas variabeln pizzaSize med MEDIUM-konstanten.

Baserat på värdet exekveras ett av fallen i bytesfallet.

Enum-klass i Java

I Java anses enumtyper vara en speciell typ av klass. Det introducerades med lanseringen av Java 5.

En enum-klass kan innehålla metoder och fält precis som vanliga klasser.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

När vi skapar en enum-klass skapar kompilatorn instanser (objekt) för varje enum-konstanter. Dessutom är hela enumkonstanten alltid som public static finalstandard.

Exempel 3: Java Enum Class

 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()); ) )

Produktion

 Storleken på pizza är liten

I exemplet ovan har vi skapat en Enum-klassstorlek. Den har fyra konstanter SMALL, MEDIUM, STOR och EXTRALARGE.

Eftersom storlek är enumklass skapar kompilatorn automatiskt instanser för varje enumkonstant.

Här inne i main()metoden har vi använt instansen SMALL för att anropa getSize()metoden.

Obs : Liksom vanliga klasser kan en enum-klass också innehålla konstruktörer. För att lära dig mer om det, besök Java enum constructor.

Metoder för Java Enum Class

Det finns några fördefinierade metoder i enumklasser som är tillgängliga för användning.

1. Java Enum ordinal ()

Den ordinal()metod returnerar positionen för en enum konstant. Till exempel,

 ordinal(SMALL) // returns 0

2. Enum jämförTill ()

Den compareTo()metod jämför ENUM konstanter baserat på deras ordnings värde. Till exempel,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

Den toString()metod returnerar strängen representation av ENUM konstanter. Till exempel,

 SMALL.toString() // returns "SMALL"

4. Enumnamn ()

Den name()metoden returnerar det definierade namnet på en enum konstant i strängform. Det returnerade värdet från name()metoden är final. Till exempel,

 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;

Här är det garanterat att variabeln kommer att innehålla ett av de fyra värdena. Om vi ​​försöker skicka andra värden än dessa fyra värden genererar kompilatorn ett fel.

Intressanta artiklar...