java enum java enumeration tutorial with examples
Αυτό το σεμινάριο θα επεξεργαστεί την τάξη και τον κατασκευαστή Java Enum. Θα μάθουμε πώς να χρησιμοποιούμε το Enum μέσω διαφόρων παραδειγμάτων προγραμματισμού Java:
Πρόκειται για μια ειδική τάξη της οποίας η εξήγηση θα δοθεί λεπτομερώς. Θα δοθεί μια εικόνα για την κλάση Java Enum μαζί με τη λίστα των μεθόδων που υποστηρίζει.
Σε αυτό το σεμινάριο περιλαμβάνονται επαρκή προγράμματα που εφαρμόζουν τις έννοιες Java enum και μερικές συχνές ερωτήσεις που μπορεί να υποβληθούν κατά τη διάρκεια των συνεντεύξεων για εύκολη κατανόησή σας.
=> Δείτε εδώ για να δείτε τη σειρά εκμάθησης Java για όλους.
Τι θα μάθετε:
Καταμέτρηση Java
Η απαρίθμηση Java δεν είναι παρά μια λίστα μεταβλητών παρουσίας, μεθόδων ή κατασκευαστών. Αυτές είναι μια ομάδα σταθερών. Η έννοια της απαρίθμησης εισήχθη στο JDK5. Η προεπιλεγμένη ιδιότητα κάθε σταθεράς απαρίθμησης είναι δημόσια, στατική και τελική.
λέξη-κλειδί enum
Η απαρίθμηση δημιουργείται χρησιμοποιώντας μια λέξη-κλειδί που ονομάζεται « απαρίθμηση '.
Παρακάτω δίνεται η σύνταξη με την οποία μπορούμε να δημιουργήσουμε μια απαρίθμηση.
Σύνταξη:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
Σημείωση: Το enum μπορεί να οριστεί μόνο μέσα σε μια κλάση ανώτερου επιπέδου ή μια διεπαφή ή σε ένα στατικό περιβάλλον. Δεν πρέπει να είναι μέσα σε μια μέθοδο.
Παράδειγμα
Σε αυτό το παράδειγμα, πρόκειται να αρχίσουμε τέσσερις απαριθμητές, δηλαδή μπαστούνι, καρδιά, διαμάντια και κλαμπ που ανήκουν σε έναν απαριθμημένο τύπο που ονομάζεται κάρτες.
Στη συνέχεια, θα προσπαθήσουμε να εκτυπώσουμε κάθε έναν από αυτούς τους απαριθμητές.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Παραγωγή:
Enum Class
Ένα πράγμα που πρέπει να έχετε παρατηρήσει στο παραπάνω παράδειγμα (δείτε σχόλια) είναι ότι δεν χρησιμοποιήσαμε ένα «Νέα λέξη-κλειδί» ενώ αποδεικνύεται. Αν και οι απαριθμήσεις ορίζουν μια κλάση Enum και οι κατασκευαστές, δεν χρησιμοποιούν νέα λέξη-κλειδί.
Μπορούμε να χρησιμοποιήσουμε τους αριθμητές που ορίζονται με τον ίδιο τρόπο όπως το πρωτόγονο. Το Enum είναι μια γενική τάξη και όλες οι απαριθμήσεις κληρονομούν το Enum.
Σύνταξη:
// E είναι ο τύπος απαρίθμησης.
τάξη Enum
Πώς να χρησιμοποιήσετε το Enum σε Java
Ας δούμε πώς να χρησιμοποιούμε το Enum σε διάφορα σενάρια με τη βοήθεια παραδειγμάτων Java:
Μέσα σε μια τάξη
Το Enum μπορεί να δηλωθεί εντός ή εκτός (παράδειγμα λέξης-κλειδιού enum) ως κλάση αλλά όχι μέσα σε μια μέθοδο. Εδώ, θα δείξουμε πώς δηλώνεται το enum μέσα σε μια τάξη.
Στο παρακάτω παράδειγμα , έχουμε δημιουργήσει μια απαρίθμηση μέσα σε μια τάξη και μετά έχουμε πάρει την τιμή ή τον απαριθμητή με τη βοήθεια μιας μεταβλητής αναφοράς a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Παραγωγή:
Επανάληψη Enum μέσω βρόχων
Εδώ, θα συζητήσουμε πώς μπορούμε να περάσουμε μέσα από ένα enum. Έχουμε δηλώσει απαρίθμηση με τέσσερις απαριθμητές (εκτός τάξης). Στη συνέχεια, έχουμε αρχικοποιήσει ένα για κάθε βρόχο (μέσα σε μια τάξη) και προσπαθήσαμε να πάρουμε την τιμή των απαριθμητών.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Παραγωγή:
βασικές ερωτήσεις συνέντευξης java για δοκιμαστές σεληνίου
Σε αν-αλλιώς
Στο παρακάτω πρόγραμμα, δημιουργήσαμε μια απαρίθμηση με τρεις διαφορετικούς απαριθμητές και στη συνέχεια αποθηκεύσαμε τον απαριθμητή στη μεταβλητή αναφοράς για έναν από τους καθορισμένους απαριθμητές.
Στη συνέχεια, ξεκινήσαμε τον έλεγχο συνθηκών if όπου έχουμε εφαρμόσει δύο συνθήκες που καθορίζονται με OR, έτσι ώστε εάν πληρούται μία από αυτές τις προϋποθέσεις, τότε θα εκτυπώσει τη δήλωση που καθορίζεται στην κατάσταση if.
Διαφορετικά, θα εκτυπώσει τη δήλωση που καθορίζεται στην άλλη κατάσταση.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Παραγωγή:
Στη δήλωση διακόπτη
Στο παρακάτω πρόγραμμα, δημιουργήσαμε μια απαρίθμηση με τέσσερις απαριθμητές. Στη συνέχεια, αποθηκεύσαμε έναν από τους απαριθμητές στη μεταβλητή αναφοράς. Στη συνέχεια, ξεκινήσαμε μια δήλωση Switch και ελέγξαμε καθέναν από αυτούς τους απαριθμητές.
Με την εμφάνιση του συγκεκριμένου απαριθμητή, θα εκτυπώσει τη δήλωση που καθορίζεται στη συγκεκριμένη περίπτωση.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Παραγωγή:
Πεδίο και μέθοδοι Enum
Πεδίο Enum
Αυτή η ενότητα θα εξηγήσει λεπτομερώς το πεδίο enum. Μπορούμε να προσθέσουμε πεδία στο Java enum και κάθε απαριθμητής λαμβάνει αυτά τα πεδία. Η τιμή πεδίου πρέπει να αντιστοιχιστεί στον κατασκευαστή του enum.
Στην παρακάτω σύνταξη, μπορούμε να δούμε ότι έχει οριστεί μια απαρίθμηση με τρεις απαριθμητές. Εκτός από κάθε απαριθμητή, έχουμε ορίσει ένα πεδίο τύπου int. ( Π.χ. - (3), (2) και (1) αντίστοιχα).
Αυτό σημαίνει ότι το Java enum έχει έναν κατασκευαστή που παίρνει ένα int. Αυτός ο κατασκευαστής θέτει το πεδίο int. Όταν ορίζεται ένας απαριθμητής, τότε αυτή η τιμή int (καθορίζεται για αυτόν τον απαριθμητή) μεταβιβάζεται στον κατασκευαστή.
Σύνταξη:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Σημείωση: Για παράδειγμα στο πεδίο Enum, ανατρέξτε στην ενότητα ' Κατασκευαστής Enum '.
Μέθοδοι Enum
# 1) όνομα ()
public final Όνομα συμβολοσειράς () - Επιστρέφει το όνομα της σταθεράς επίκλησης (αμετάβλητο ή αμετάβλητο).
# 2) ισούται με ()
public final boolean ισούται με (Αντικείμενο άλλο) - Επιστρέφει true εάν το obj και το αντικείμενο επίκλησης αναφέρονται στην ίδια σταθερά.
# 3) toString
public String toString () - Επιστρέφει το όνομα της σταθεράς επίκλησης. Δεν ταιριάζει απαραίτητα με το όνομα που χρησιμοποιείται στη δήλωση απαρίθμησης.
# 4) κλώνος
προστατευμένος κλώνος τελικού αντικειμένου ()
ρίχνει CloneNotSupportedException - Αυτό σημαίνει ότι το enum θα ρίξει μια εξαίρεση όταν προσπαθεί να κλωνοποιήσει.
# 5) hashCode ()
public final int hashCode () - Επιστρέφει τον κωδικό κατακερματισμού για το αντικείμενο επίκλησης.
# 6) οριστικοποίηση ()
προστατευμένο final void finalize () - η κλάση enum δεν μπορεί να έχει οριστικοποιημένες μεθόδους. Χωρίς τιμή επιστροφής.
# 7) σύγκρισηΤο ()
public final int membandingkanTo (E obj) - Αυτό συγκρίνει το enum με το καθορισμένο αντικείμενο obj. Επιστρέφει αρνητικά εάν το αντικείμενο είναι μικρότερο από το καθορισμένο αντικείμενο. Επιστρέφει θετικό εάν αυτό το αντικείμενο είναι μεγαλύτερο από το καθορισμένο αντικείμενο obj και επιστρέφει μηδέν εάν το καθορισμένο obj είναι ίσο με αυτό το αντικείμενο.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Επιστρέφει τον τύπο απαρίθμησης (επίσης γνωστός ως κλάση δήλωσης enum) του οποίου η σταθερά επίκλησης είναι μέλος.
# 9) ordinal (), τιμές () και valueOf ()
Όλες αυτές οι μέθοδοι αποτελούν μέρος του πακέτου java.lang.Enum . Η μέθοδος ordinal () επιστρέφει τη σειρά της σταθεράς απαρίθμησης βάσει του δείκτη της σταθεράς.
Η μέθοδος τιμές () επιστρέφει όλες τις τιμές που υπάρχουν στην απαρίθμηση. Η μέθοδος valueOf (String) επιστρέφει τη σταθερά απαρίθμησης της συμβολοσειράς εισόδου. Εάν η καθορισμένη συμβολοσειρά δεν ταιριάζει με τη σταθερά, τότε θα ρίξει το IllegalArgumentException.
Παρακάτω δίνεται το παράδειγμα προγραμματισμού όπου έχουμε χρησιμοποιήσει το ίδιο παράδειγμα (όπως το παράδειγμα της λέξης-κλειδιού enum) και εφαρμόσαμε την έννοια και των τριών μεθόδων.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Παραγωγή:
Κατασκευαστής Enum
Το Enum (καθώς και μια κλάση) υποστηρίζει τον κατασκευαστή για τη μετάδοση δεδομένων κατά τη δημιουργία απαριθμητών ή επίσης γνωστών ως σταθερές enum.
Η κύρια ιδιότητα ενός κατασκευαστή enum είναι ότι είναι ιδιωτικό ή ιδιωτικό πακέτο. Αυτό σημαίνει ότι είτε είναι προσβάσιμα σε μια τάξη είτε σε ένα πακέτο.
Ας δούμε το παρακάτω παράδειγμα. Εδώ έχουμε χρησιμοποιήσει τόσο τη μέθοδο όσο και τον κατασκευαστή. Πρώτα απ 'όλα, έχουμε δημιουργήσει μια απαρίθμηση με το όνομα «παίκτες» που έχει πέντε απαριθμητές και το πεδίο.
Έπειτα, έχουμε έναν κατασκευαστή και μια μέθοδο που θα επιστρέψει τον αριθμό των τρεξίματος που έχουν σημειωθεί από κάθε παίκτη ή απαριθμητή ή σταθερά enum.
Στη συνέχεια, έχουμε την κύρια τάξη στην οποία έχουμε χρησιμοποιήσει για κάθε βρόχο με τη μέθοδο τιμών () για να αποθηκεύσουμε και να επαναλάβουμε κάθε απαριθμητή. Επίσης, κάναμε τη μέθοδο για τον αριθμό των τρεξίματος που έχει σημειώσει κάθε παίκτης.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Παραγωγή:
Συχνές Ερωτήσεις
Q # 1) Ποια είναι η διαφορά μεταξύ του Iterator και του απαρίθμησης στην Java;
Απάντηση: Παρακάτω δίνεται η διαφορά μεταξύ Iterator και απαρίθμησης.
Επαναληπτής | Απαρίθμηση |
---|---|
Είναι ένας γενικός δρομέας που χρησιμοποιείται για την επανάληψη στοιχείων και ισχύει για όλες τις κατηγορίες συλλογής. | Δεν είναι ένας γενικός δρομέας, επειδή ισχύει μόνο για μαθήματα παλαιού τύπου, όπως το Enum. Μόνο άδεια ανάγνωσης για μια τάξη συλλογής. |
Ορισμένες από τις μεθόδους είναι hasNext (), next () για επανάληψη. | Ορισμένες από τις μεθόδους είναι hasMoreElements (), nextElement () για επανάληψη. |
Μπορούμε να καταργήσουμε το στοιχείο σε μια συλλογή χρησιμοποιώντας επαναληπτικό. | Δεν μπορούμε να καταργήσουμε το στοιχείο σε μια συλλογή χρησιμοποιώντας την απαρίθμηση επειδή έχει μόνο άδεια ανάγνωσης. |
Ε # 2) Πώς η Enum υποστηρίζει την Κληρονομικότητα;
Απάντηση: Το Afterall Enum είναι επίσης ένα μάθημα στην Java, οπότε πρέπει να υποστηρίζει την κληρονομιά που αποτελεί βασική αρχή του OOPS. Όλες οι απαριθμήσεις επεκτείνουν την κλάση java.lang.Enum. Καθώς μια τάξη μπορεί να επεκτείνει μόνο έναν γονέα, η κλάση Enum δεν επεκτείνει καμία άλλη.
Το toString () που είναι μέρος της κλάσης Enum (εξηγείται στην ενότητα Μέθοδος Enum) παρακάμπτεται στην κλάση java.lang.Enum.
συμπέρασμα
Σε αυτό το σεμινάριο, συζητήσαμε τις απαριθμήσεις, τους απαριθμητές, την κλάση Java Enum και τη λέξη-κλειδί enum με κατάλληλα παραδείγματα και εξηγήσεις όπου απαιτείται. Επίσης, έχουμε δώσει μια εικόνα για τις σημαντικές μεθόδους που σχετίζονται με την κατηγορία Enum με το πεδίο enum.
Έχει δοθεί μια εικόνα για τον κατασκευαστή, το enum με if-else, switch και loop.
=> Επισκεφθείτε εδώ για να μάθετε Java από το μηδέν.
Συνιστώμενη ανάγνωση
- Εκπαιδευτικό μάθημα κλάσης Java Scanner με παραδείγματα
- Java Integer και Java BigInteger Class με παραδείγματα
- Java Float Tutorial με παραδείγματα προγραμματισμού
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- TreeMap In Java - Tutorial With Java TreeMap Παραδείγματα
- Java Double - Tutorial με παραδείγματα προγραμματισμού
- Εκπαιδευτικό μάθημα Java Array - java.util.Arrays Class με παραδείγματα
- C # Έννοιες: Κατασκευαστής, Καταστροφέας, Στατική Κατηγορία, Δομή & Enum