3.3 Ο τύπος δεδομένων Enum στην Java

Τα Enums στην Java είναι μια τύπος δεδομένων που επιτρέπει τον ορισμό ενός συγκεκριμένου συνόλου σταθερών τιμών. Τα Enums χρησιμοποιούνται για να αναπαραστήσουν μια συλλογή από σταθερές τιμές που έχουν προκαθορισμένες αξίες.

Όταν ορίζουμε ένα Enum στην Java, καθορίζουμε τις διαθέσιμες τιμές που μπορεί να έχει η μεταβλητή του Enum. Κάθε τιμή στο Enum αντιπροσωπεύεται από ένα αντικείμενο της κλάσης Enum, και έχει ένα όνομα που το αναγνωρίζει μοναδικά.

Η χρήση των Enums παρέχει την δυνατότητα της ασφαλούς και κατανοητής αναπαράστασης μιας πεπερασμένης λίστας πιθανών τιμών. Επίσης, μπορούν να περιέχουν μεθόδους και άλλες λειτουργίες που σχετίζονται με την τιμή κάθε Enum.

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

Για να δημιουργήσετε ένα Enum στη Java, χρησιμοποιήστε τη λέξη-κλειδί “enum” (αντί για class ή interface), και χωρίστε τις σταθερές με κόμματα. Σημειώστε ότι πρέπει να γράφονται σε κεφαλαία γράμματα:

public enum Day {
  MONDAY,
  TUESDAY,
  WEDNESDAY,
  THURSDAY,
  FRIDAY,
  SATURDAY,
  SUNDAY
}

Σε αυτό το παράδειγμα, δημιουργούμε ένα Enum με το όνομα Day που περιέχει τις σταθερές MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY και SUNDAY.

Μπορούμε να χρησιμοποιήσουμε το Enum μας ως τύπο μεταβλητής, όπως φαίνεται στο παρακάτω παράδειγμα:

public class Main {
  public static void main(String[] args) {
    Day myDay = Day.MONDAY; // Δημιουργία μιας μεταβλητής myDay τύπου Day και ανάθεση της τιμής MONDAY
    System.out.println("Today is " + myDay); // Εκτύπωση του μηνύματος "Today is " ακολουθούμενο από την τιμή της μεταβλητής myDay
  }
}

Ο παραπάνω κώδικας δημιουργεί μια μεταβλητή myDay τύπου Day και της αναθέτει την τιμή Day.MONDAY, που είναι ένα από τα στοιχεία του enum Day. Έπειτα, χρησιμοποιεί τη μέθοδο System.out.println() για να εκτυπώσει στην οθόνη το μήνυμα “Today is ” ακολουθούμενο από την τιμή της μεταβλητής myDay. Στη συγκεκριμένη περίπτωση, το πρόγραμμα θα εκτυπώσει “Today is MONDAY”. Ο κώδικας αυτός δείχνει πώς μπορείτε να χρησιμοποιήσετε τα στοιχεία ενός enum και να τα εμφανίσετε στην οθόνη.

Τα Enums στην Java είναι χρήσιμα για τη διαχείριση σταθερών σε μια εφαρμογή, ειδικά όταν έχουμε ένα συγκεκριμένο σύνολο τιμών που δεν αλλάζουν. Επιπλέον, μπορούν να χρησιμοποιηθούν για να καθορίσουν τιμές επιστροφής ή παραμέτρους σε μεθόδους, καθώς και στοιχεία συλλογών (όπως πίνακες ή λίστες).

[adinserter block=”2″]

Μια ακόμη χρήσιμη λειτουργία των Enums είναι η δυνατότητα προσθήκης μεθόδων σε αυτά. Για παράδειγμα:

public enum Day {
  MONDAY("Monday blues"),
  TUESDAY("Taco Tuesday"),
  WEDNESDAY("Hump day"),
  THURSDAY("Throwback Thursday"),
  FRIDAY("TGIF"),
  SATURDAY("Weekend vibes"),
  SUNDAY("Lazy Sunday");

  private String description; // Η περιγραφή της ημέρας

  private Day(String description) {
    this.description = description;
  }

  public String getDescription() {
    return description; // Επιστρέφει την περιγραφή της ημέρας
  }
}

public class Main {
  public static void main(String[] args) {
    Day myDay = Day.MONDAY;
    System.out.println("Today is " + myDay + " - " + myDay.getDescription()); // Εκτύπωση της ημέρας και της περιγραφής της
  }
}

Ο παραπάνω κώδικας περιέχει τα εξής:

  1. Ορισμός της enum με όνομα Day, η οποία περιέχει τις διάφορες ημέρες της εβδομάδας.
  • Κάθε ημέρα έχει μια συνοδευτική περιγραφή.
  • Οι ημέρες απαριθμούνται μεταξύ των στοιχείων MONDAY και SUNDAY.
  1. Ορισμός της κλάσης Main, η οποία περιέχει τη συνάρτηση main.
  • Δημιουργείται μια μεταβλητή myDay τύπου Day και ορίζεται η τιμή της ως Day.MONDAY.
  • Χρησιμοποιώντας την εντολή System.out.println, εκτυπώνεται η φράση “Today is “, ακολουθούμενη από την τιμή της myDay και την αντίστοιχη περιγραφή της ημέρας που λαμβάνεται μέσω της μεθόδου getDescription().

Επομένως, ο κώδικας εκτυπώνει την ημέρα που έχει οριστεί ως myDay (σε αυτήν την περίπτωση, τη Δευτέρα) και την αντίστοιχη περιγραφή της (“Monday blues”) στην οθόνη.

Η δυνατότητα να προσθέτουμε πεδία και μεθόδους στα Enums μας καθιστά ακόμη πιο χρήσιμα για την αναπαράσταση σταθερών σε μια εφαρμογή.

Μπορούμε επίσης να χρησιμοποιήσουμε τη μέθοδο values για να επιστρέψουμε έναν πίνακα που περιέχει όλες τις σταθερές ενός Enum, όπως φαίνεται στο παρακάτω παράδειγμα:

public enum Day {
  MONDAY,
  TUESDAY,
  WEDNESDAY,
  THURSDAY,
  FRIDAY,
  SATURDAY,
  SUNDAY
}

public class Main {
  public static void main(String[] args) {
    Day[] days = Day.values(); // Παίρνουμε όλες τις τιμές του enum Day και τις αποθηκεύουμε στον πίνακα 'days'
    for (Day day : days) {
      System.out.println(day); // Εκτύπωση κάθε τιμής του enum Day
    }
  }
}

Ο παραπάνω κώδικας παρουσιάζει μια απλή χρήση του enum Day και εμφανίζει όλες τις τιμές του enum στην κονσόλα.

Αρχικά, ορίζεται ο enum Day που περιέχει τις διάφορες ημέρες της εβδομάδας.

Στην κλάση Main, η μέθοδος main εκτελείται όταν το πρόγραμμα ξεκινάει. Εσωτερικά, δημιουργείται ένας πίνακας days που περιέχει όλες τις τιμές του enum Day με τη χρήση της μεθόδου values(). Στη συνέχεια, χρησιμοποιώντας τη δομή επανάληψης for-each, κάθε τιμή του πίνακα days εκτυπώνεται στην κονσόλα με τη χρήση της μεθόδου println() της κλάσης System.out.

Έτσι, ο κώδικας εμφανίζει όλες τις ημέρες της εβδομάδας στην κονσόλα, δηλαδή: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.

Τα Enums στην Java μπορούν να χρησιμοποιηθούν σε πολλά σημεία της εφαρμογής σας, όπου χρειάζεται ένα σταθερό σύνολο τιμών. Με τη δυνατότητα προσθήκης πεδίων και μεθόδων στα Enums σας, μπορείτε να καθορίσετε περαιτέρω τα σταθερά σας και να τα κάνετε πιο ευανάγνωστα και εύκολα συντηρήσιμα.

[adinserter block=”3″]

Μπορείτε επίσης να έχετε ένα Enum μέσα σε μια κλάση:

public class MyClass {
  enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
  }


  public static void main(String[] args) {
    Day myDay = Day.MONDAY; // Δημιουργία μιας μεταβλητής myDay τύπου Day με την τιμή MONDAY
    System.out.println("Today is " + myDay); // Εκτύπωση του μηνύματος "Today is " ακολουθούμενο από την τιμή της μεταβλητής myDay
  }
}

Ο παραπάνω κώδικας ορίζει μια κλάση με όνομα MyClass. Μέσα στην κλάση υπάρχει ένα enum με όνομα Day, το οποίο περιέχει τις διάφορες ημέρες της εβδομάδας.

Στην main μέθοδο της κλάσης, δημιουργείται μια μεταβλητή myDay τύπου Day και της ανατίθεται η τιμή Day.MONDAY, που αντιστοιχεί στη Δευτέρα. Στη συνέχεια, με τη χρήση της μεθόδου System.out.println(), εκτυπώνεται το μήνυμα “Today is” ακολουθούμενο από την τιμή της μεταβλητής myDay.

Ο κώδικας εκτυπώνει στην οθόνη το μήνυμα “Today is MONDAY” (Σήμερα είναι Δευτέρα), καθώς η τιμή της μεταβλητής myDay είναι Day.MONDAY. Αντίστοιχα, αν η μεταβλητή myDay είχε τιμή Day.TUESDAY, τότε θα εμφανιζόταν το μήνυμα “Today is TUESDAY” (Σήμερα είναι Τρίτη), και ούτω καθεξής για τις υπόλοιπες ημέρες της εβδομάδας.

Αν χρειάζεστε μια σταθερή που είναι σχετική μόνο με μια συγκεκριμένη κλάση, τότε μπορεί να είναι χρήσιμο να έχετε το Enum μέσα στην κλάση αυτή. Μπορείτε να χρησιμοποιήσετε το Enum όπως και κάθε άλλη σταθερά της κλάσης, και μπορείτε να αποφύγετε την κλοπή ονομάτων μεταξύ διαφορετικών κλάσεων.

Τα Enums χρησιμοποιούνται συχνά σε εντολές switch για τον έλεγχο αντίστοιχων τιμών. Ένα παράδειγμα είναι το εξής:

public class Main {
  enum Day {
    MONDAY, // Η Δευτέρα
    TUESDAY, // Η Τρίτη
    WEDNESDAY, // Η Τετάρτη
    THURSDAY, // Η Πέμπτη
    FRIDAY, // Η Παρασκευή
    SATURDAY, // Το Σάββατο
    SUNDAY // Η Κυριακή
  }

  public static void main(String[] args) {
    Day myDay = Day.MONDAY; // Ορισμός της μέρας ως Δευτέρα

    switch(myDay) {
      case MONDAY:
        System.out.println("Today is Monday"); // Εκτύπωση "Today is Monday" αν η μέρα είναι Δευτέρα
        break;
      case TUESDAY:
        System.out.println("Today is Tuesday"); // Εκτύπωση "Today is Tuesday" αν η μέρα είναι Τρίτη
        break;
      case WEDNESDAY:
        System.out.println("Today is Wednesday"); // Εκτύπωση "Today is Wednesday" αν η μέρα είναι Τετάρτη
        break;
      case THURSDAY:
        System.out.println("Today is Thursday"); // Εκτύπωση "Today is Thursday" αν η μέρα είναι Πέμπτη
        break;
      case FRIDAY:
        System.out.println("Today is Friday"); // Εκτύπωση "Today is Friday" αν η μέρα είναι Παρασκευή
        break;
      case SATURDAY:
        System.out.println("Today is Saturday"); // Εκτύπωση "Today is Saturday" αν η μέρα είναι Σάββατο
        break;
      case SUNDAY:
        System.out.println("Today is Sunday"); // Εκτύπωση "Today is Sunday" αν η μέρα είναι Κυριακή
        break;
    }
  }
}

Ο παραπάνω κώδικας υλοποιεί ένα παράδειγμα χρήσης του enum (enumeration) στην Java. Ο κώδικας ορίζει ένα enum με την ονομασία “Day”, το οποίο περιλαμβάνει τις διάφορες ημέρες της εβδομάδας.

Στη συνέχεια, ο κώδικας περιλαμβάνει μια κύρια μέθοδο “main”, όπου δημιουργείται μια μεταβλητή “myDay” τύπου “Day” και τις ανατίθεται η τιμή “MONDAY” (Δευτέρα).

Στην ενότητα του “switch” ελέγχεται η τιμή της μεταβλητής “myDay” και εκτελείται η αντίστοιχη περίπτωση (case) για την αντίστοιχη ημέρα. Ανάλογα με την ημέρα που έχει οριστεί, εμφανίζεται ένα μήνυμα στην οθόνη που αναφέρει την ημέρα της εβδομάδας.

Συγκεκριμένα, αφού η τιμή της μεταβλητής “myDay” είναι “MONDAY”, εκτυπώνεται το μήνυμα “Today is Monday” στην κονσόλα.

Αν αλλάξουμε την τιμή της μεταβλητής “myDay” σε άλλη ημέρα, τότε θα εμφανιστεί το αντίστοιχο μήνυμα για τη συγκεκριμένη ημέρα.

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

Η χρήση Enums σε εντολές switch μπορεί να κάνει τον κώδικα πιο ευανάγνωστο και εύκολο στη συντήρηση. Επιπλέον, η συλλογή των σταθερών στο Enum εξασφαλίζει ότι οι τιμές που χρησιμοποιούνται στην εντολή switch είναι περιορισμένες σε ένα σταθερό σύνολο, αποφεύγοντας έτσι λάθη και μη-εγκυρες τιμές.

[adinserter block=”4″]

Το Enum έχει μια μέθοδο values(), η οποία επιστρέφει έναν πίνακα όλων των σταθερών του Enum. Αυτή η μέθοδος είναι χρήσιμη όταν θέλετε να διατρέξετε τις σταθερές ενός Enum. Ένα παράδειγμα είναι το εξής:

public enum Day {
  MONDAY,
  TUESDAY,
  WEDNESDAY,
  THURSDAY,
  FRIDAY,
  SATURDAY,
  SUNDAY
}

public class Main {
  public static void main(String[] args) {
    for (Day day : Day.values()) {
      System.out.println(day); // Εκτύπωση της ημέρας
    }
  }
}

Ο παραπάνω κώδικας εμφανίζει τις ημέρες της εβδομάδας στην οθόνη.

Η κλάση Day είναι ένας τύπος enum που περιέχει τις διάφορες ημέρες της εβδομάδας ως σταθερές τιμές. Έπειτα, στην κλάση Main, στη μέθοδο main, χρησιμοποιείται ένας βρόγχος for για να περιηγηθούμε σε όλες τις τιμές του enum Day. Κάθε τιμή του enum εκτυπώνεται στην οθόνη χρησιμοποιώντας τη μέθοδο println της κλάσης System.out.

Έτσι, ο κώδικας εκτυπώνει την ακόλουθη σειρά ημερών στην κονσόλα:

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY

Αυτός είναι ο τρόπος με τον οποίο ο κώδικας εμφανίζει τις ημέρες της εβδομάδας.

Η δυνατότητα διάσχισης μεταξύ των σταθερών ενός Enum μπορεί να είναι χρήσιμη όταν χρειάζεστε να εκτελέσετε μια εργασία σε κάθε σταθερά, χωρίς να χρειάζεται να επαναλαμβάνετε τον κώδικα για κάθε σταθερά ξεχωριστά.

14 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων