El Enum en Java és un tipus de dades que conté un conjunt fix de constants.
Es pot utilitzar per als dies de la setmana (DIUMENGE, DILLUNS, DIMARTS, DIMECRES, DIJOUS, DIVENDRES i DISSABTE), direccions (NORD, SUD, EST i OEST), temporada (PRIVANA, ESTIU, HIVERN i TARDOR o TARDOR). ), colors (VERMELL, GROC, BLAU, VERD, BLANC i NEGRE) etc. D'acord amb les convencions de denominació de Java, hauríem de tenir totes les constants en majúscules. Per tant, tenim constants d'enumeració en majúscules.
Les enumeracions Java es poden considerar com a classes que tenen un conjunt fix de constants (una variable que no canvia). Les constants d'enumeració de Java són estàtiques i finals implícitament. Està disponible des de JDK 1.5.
cadena java concatenada
Les enumeracions s'utilitzen per crear el nostre propi tipus de dades com les classes. El enumeració El tipus de dades (també conegut com a tipus de dades enumerades) s'utilitza per definir una enumeració a Java. A diferència de C/C++, enumeració a Java és més potent . Aquí, podem definir una enumeració dins de la classe o fora de la classe.
Java Enum hereta internament el Classe enumeració , de manera que no pot heretar cap altra classe, però pot implementar moltes interfícies. Podem tenir camps, constructors, mètodes i mètodes principals a Java enumeració.
Punts a recordar per a Java Enum
- Enum millora la seguretat del tipus
- Enum es pot utilitzar fàcilment a l'interruptor
- Enum es pot recórrer
- Enum pot tenir camps, constructors i mètodes
- Enum pot implementar moltes interfícies, però no pot ampliar cap classe perquè internament amplia la classe Enum
Exemple senzill de Java Enum
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}Prova-ho ara
Sortida:
WINTER SPRING SUMMER FALL
Vegem un altre exemple d'enumeració Java on estem utilitzant els mètodes value(), valueOf() i ordinal() de Java enum.
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
Sortida:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Nota: el compilador Java afegeix internament els mètodes values(), valueOf() i ordinal() dins de l'enum en temps de compilació. Crea internament una classe estàtica i final per a l'enum.
Quin és l'objectiu del mètode values() a la enumeració?
El compilador de Java afegeix internament el mètode values() quan crea una enumeració. El mètode values() retorna una matriu que conté tots els valors de la enumeració.
Quin és l'objectiu del mètode valueOf() a l'enum?
El compilador de Java afegeix internament el mètode valueOf() quan crea una enumeració. El mètode valueOf() retorna el valor de la enumeració constant donada.
Quin és l'objectiu del mètode ordinal() a l'enum?
El compilador de Java afegeix internament el mètode ordinal() quan crea una enumeració. El mètode ordinal() retorna l'índex del valor d'enum.
en cadena en java
Definició de Java Enum
La enumeració es pot definir dins o fora de la classe perquè és similar a una classe. El punt i coma (;) al final de les constants enumeració és opcional. Per exemple:
enum Season { WINTER, SPRING, SUMMER, FALL }
O,
enum Season { WINTER, SPRING, SUMMER, FALL; }
Les dues definicions d'enum Java són les mateixes.
Java Enum Exemple: Definit fora de la classe
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Prova-ho ara
Sortida:
WINTER
Exemple d'enumeració Java: definit dins de la classe
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}Prova-ho ara
Sortida:
convertir un nombre enter en una cadena
WINTER
Java Enum Exemple: mètode principal dins Enum
Si poseu el mètode main() dins de l'enum, podeu executar l'enum directament.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Sortida:
WINTER
Inicialització de valors específics a les constants enumeració
Les constants enumeracions tenen un valor inicial que comença des de 0, 1, 2, 3, etc. Però, podem inicialitzar el valor específic de les constants d'enum definint camps i constructors. Com s'ha especificat anteriorment, Enum pot tenir camps, constructors i mètodes.
Exemple d'especificació del valor inicial a les constants enumeració
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}Prova-ho ara
Sortida:
WINTER 5 SPRING 10 SUMMER 15 FALL 20
El constructor del tipus enumeració és privat. Si no declareu que el compilador privat crea internament un constructor privat.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
Codi intern generat pel compilador per a l'exemple anterior de tipus enum
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
Podem crear la instància d'Enum amb una paraula clau nova?
No, perquè només conté constructors privats. |
Podem tenir un mètode abstracte a l'Enum?
Sí, per suposat! podem tenir mètodes abstractes i podem proporcionar la implementació d'aquests mètodes.
Java Enum en una instrucció switch
Podem aplicar la instrucció enumeració a l'interruptor com a l'exemple donat:
Exemple d'aplicació Enum en una instrucció switch
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}Prova-ho ara
Sortida:
monday