Documente Academic
Documente Profesional
Documente Cultură
Enum în Java
Într-un limbaj de programare, prin enumerări se poate reprezenta un grup de constante denumite.
Tipul enumerativ este un tip special de date ce permite ca pentru o variabilă să existe un număr
predefinit de constante. Variabila trebuie să fie egală cu una dintre valorile predefinite pentru ea.
Exemple de tipuri enumerative pot fi considerate plantele sistemului solar, zilele săptămânii, lunile
anului, puncte cardinale, culori, etc. Enums sunt utilizate atunci când se cunosc toate valorile
posibile la timpul compilării.
În limbajul Java, tipurile enumerative sunt prezente începând cu versiunea JDK 1.5, sub forma
tipului de date enum. Spre deosebire de C/C++, tipurile de date enum pot conține variabile, metode
și constructori.
enum PixelColor {
RED, GREEN, BLUE;
}
enum PixelColor {
RED, GREEN, BLUE;
}
1
Conform specificațiilor de formatare pentru limbajul Java, este recomandat ca constantele să
fie scrise cu majuscule.
Primul rând din enum este lista de constante urmată pe urmă de alte elemente ca variabile,
constructori sau metode.
Intern, un enum este reprezentat prin clase. Fiecare constantă enum reprezintă un obiect de
tip enum.
Orice constantă enum este implicit public static final, ca urmare poate fi accesată direct
prin numele tipului enum.
Tipuri enum pot fi folosite în instrucțiuni swich.
Enum și swich
// Enum class
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
// Constructor
public Test(Day day) {
this.day = day;
}
În interiorul unui enum poate fi declarată și metoda main, așadar un enum poate fi invocat
(de la consolă) pentru lansarea în execuție a aplicației.
2
Main în enum
enum PixelColor {
RED, GREEN, BLUE;
enum PixelColor {
RED, GREEN, BLUE;
}
// Using valueOf()
System.out.println(PixelColor.valueOf("GREEN"));
// System.out.println(Color.valueOf("WHITE"));
// IllegalArgumentException
}
}
3
Constructor și metode
Enum poate conține constructor. Acesta este apelat separat pentru fiecare constantă enum la
momentul încărcării clasei enum.
Un constructor enum nu poate fi apelat direct pentru că nu pot fi create obiecte enum în mod
explicit.
Enum poate conține metode concrete dar nu și metode abstracte.
enum PixelColor {
RED, GREEN, BLUE;
// enum constructor
private PixelColor() {
System.out.println("Constructor for : " + this.toString());
}
Implicit, constantele din enum au valoarea lor proprie ca String, dar ele pot primi și alte valori. În
acest sens, se creează un constructor cu parametru în clasa enum curentă. Cum un enum nu poate fi
folosit la instanțiere de obiecte, constructorul va trebuie să aibă modificatorul de acces implicit sau
private. În plus, trebuie adăugată o metodă getter pentru a obține valorile din enum.
enum PixelColor {
RED("ROSU"), GREEN("VERDE"), BLUE("ALBASTRU");
// enum constructor
private PixelColor(String data) {
this.data = data;
System.out.println("Constructor for : " + this.toString());
}
// getter method
public String getData() {
return this.data;
}
}
4
public class Test {
Output: