Java enum & enum Class (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για τα ποσά στην Java. Θα μάθουμε να δημιουργούμε και να χρησιμοποιούμε μαθήματα enum και enum με τη βοήθεια παραδειγμάτων.

Στην Java, ένα enum (συντομογραφία για απαρίθμηση) είναι ένας τύπος που έχει ένα σταθερό σύνολο σταθερών τιμών. Χρησιμοποιούμε τη enumλέξη-κλειδί για να δηλώσουμε τα ποσά. Για παράδειγμα,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Εδώ, δημιουργήσαμε ένα enum με το όνομα Size. Περιέχει σταθερές τιμές ΜΙΚΡΟ, ΜΕΣΟ, ΜΕΓΑΛΟ και ΕΞΩΤΕΡΙΚΟ.

Αυτές οι τιμές εντός των στηριγμάτων ονομάζονται σταθερές enum (τιμές).

Σημείωση: Οι σταθερές enum αντιπροσωπεύονται συνήθως με κεφαλαία γράμματα.

Παράδειγμα 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); ) )

Παραγωγή

 ΜΙΚΡΟ ΜΕΣΟ

Όπως μπορούμε να δούμε από το παραπάνω παράδειγμα, χρησιμοποιούμε το όνομα enum για πρόσβαση στις σταθερές τιμές.

Επίσης, μπορούμε να δημιουργήσουμε μεταβλητές τύπων enum. Για παράδειγμα,

 Size pizzaSize;

Εδώ, το pizzaSize είναι μια μεταβλητή του τύπου Size. Μπορεί να αντιστοιχιστεί μόνο με 4 τιμές.

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

Παράδειγμα 2: Java Enum με τη δήλωση διακόπτη

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

Παραγωγή

 Παρήγγειλα μια πίτσα μεσαίου μεγέθους.

Στο παραπάνω πρόγραμμα, έχουμε δημιουργήσει ένα μέγεθος μεγέθους τύπου enum. Στη συνέχεια δηλώσαμε μια μεταβλητή πίτσα Μέγεθος του τύπου Μέγεθος.

Εδώ, η μεταβλητή pizzaSize μπορεί να αντιστοιχιστεί μόνο με 4 τιμές (ΜΙΚΡΟ, ΜΕΣΟ, ΜΕΓΑΛΟ, ΕΞΩΤΕΡΙΚΟ).

Παρατηρήστε τη δήλωση,

 Test t1 = new Test(Size.MEDIUM);

Θα καλέσει τον Test()κατασκευαστή μέσα στην τάξη δοκιμής. Τώρα, η μεταβλητή pizzaSize έχει αντιστοιχιστεί με τη σταθερά MEDIUM.

Με βάση την τιμή, εκτελείται μία από τις περιπτώσεις της δήλωσης περίπτωσης εναλλαγής.

Enum Class στην Ιάβα

Στην Java, οι τύποι enum θεωρούνται ειδικοί τύποι τάξεων. Παρουσιάστηκε με την κυκλοφορία του Java 5.

Μια κλάση enum μπορεί να περιλαμβάνει μεθόδους και πεδία όπως τα κανονικά μαθήματα.

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

Όταν δημιουργούμε μια κλάση enum, ο μεταγλωττιστής θα δημιουργεί παρουσίες (αντικείμενα) κάθε σταθεράς enum. Επίσης, όλες οι σταθερές enum είναι πάντα public static finalαπό προεπιλογή.

Παράδειγμα 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()); ) )

Παραγωγή

 Το μέγεθος της πίτσας είναι μικρό

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα μέγεθος κλάσης enum. Διαθέτει τέσσερις σταθερές ΜΙΚΡΟ, ΜΕΣΟ, ΜΕΓΑΛΟ και ΕΞΩΤΕΡΙΚΟ.

Δεδομένου ότι το μέγεθος είναι κλάση enum, ο μεταγλωττιστής δημιουργεί αυτόματα στιγμιότυπα για κάθε σταθερά enum.

Εδώ μέσα στη main()μέθοδο, χρησιμοποιήσαμε την παρουσία ΜΙΚΡΟ για να καλέσουμε τη getSize()μέθοδο.

Σημείωση : Όπως οι κανονικές τάξεις, μια κλάση enum μπορεί επίσης να περιλαμβάνει κατασκευαστές. Για να μάθετε περισσότερα σχετικά με αυτό, επισκεφθείτε το Java enum buildor.

Μέθοδοι της κλάσης Java Enum

Υπάρχουν ορισμένες προκαθορισμένες μέθοδοι σε τάξεις enum που είναι άμεσα διαθέσιμες για χρήση.

1. Java Enum ordinal ()

Η ordinal()μέθοδος επιστρέφει τη θέση μιας σταθεράς enum. Για παράδειγμα,

 ordinal(SMALL) // returns 0

2. Enum σύγκρισηTo ()

Η compareTo()μέθοδος συγκρίνει τις σταθερές enum με βάση την κανονική τους τιμή. Για παράδειγμα,

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

3. Enum toString ()

Η toString()μέθοδος επιστρέφει την παράσταση συμβολοσειράς των σταθερών enum. Για παράδειγμα,

 SMALL.toString() // returns "SMALL"

4. Όνομα Enum ()

Η name()μέθοδος επιστρέφει το καθορισμένο όνομα μιας σταθεράς enum σε μορφή συμβολοσειράς. Η επιστρεφόμενη τιμή από τη name()μέθοδο είναι final. Για παράδειγμα,

 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;

Εδώ, είναι εγγυημένο ότι η μεταβλητή θα διατηρήσει μία από τις τέσσερις τιμές. Τώρα, εάν προσπαθήσουμε να περάσουμε τιμές εκτός από αυτές τις τέσσερις τιμές, ο μεταγλωττιστής θα δημιουργήσει ένα σφάλμα.

ενδιαφέροντα άρθρα...