Guía para principiantes de Java eNum: ¿por qué y para qué debo usar Enum? Ejemplos de enumeración de Java
Publicado: 2019-04-23 Las enumeraciones son listas de constants
como variables inmutables. ¿Has oído hablar de Final keyword
? Es así.
Cuando necesite una lista predefinida de valores que representen algún tipo de datos numéricos o textuales, debe usar una enumeración. Por ejemplo, en un juego de ajedrez podrías representar los diferentes tipos de piezas como una enumeración:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Siempre debe usar enumeraciones cuando una variable (especialmente un parámetro de método) solo puede tomar uno de un pequeño conjunto de valores posibles. Los ejemplos serían cosas como constantes de tipo (estado del contrato: "permanente", "temporario", "aprendiz") o indicadores ("ejecutar ahora", "aplazar la ejecución").
Si usa enumeraciones en lugar de números enteros (o códigos de cadena), aumenta la verificación en tiempo de compilación y evita que los errores pasen constantes no válidas, y documenta qué valores son legales para usar.
Ejemplo Java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
Producción:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
Algunos puntos muy importantes en Java Enum:
Punto 1
Todas las enumeraciones extienden implícitamente java.lang.Enum
. Dado que Java no admite la herencia múltiple, una enumeración no puede extender nada más.
Punto-2
Enum in Java are type-safe:
Enum tiene su propio espacio de nombres. Significa que su enumeración tendrá un tipo, por ejemplo, "Compañía" en el ejemplo a continuación y no puede asignar ningún valor que no sea el especificado en las constantes de enumeración.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Punto-3
Puede especificar valores de constantes de enumeración en el momento de la creación. MyEnum.values()
devuelve una matriz de valores de MyEnum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
Producción:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
Punto-4
Las constantes de enumeración son implícitamente estáticas y definitivas y no se pueden cambiar una vez creadas.
Punto-5
Enum se puede comparar de forma segura usando:
- Declaración de cambio de caso
- == Operador
- Método .equals() Siga el tutorial completo.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Punto-6
No puede crear instancias de enumeraciones utilizando el nuevo operador en Java porque el constructor de Enum en Java solo puede ser privado y las constantes de Enums solo pueden crearse dentro de Enums.
Punto-7
La instancia de Enum en Java se crea cuando se llama o se hace referencia por primera vez a cualquier constante de Enum en el código.
Punto-8
Una enumeración especifica una lista de valores constantes asignados a un tipo.
Punto-9
Una enumeración se puede declarar fuera o dentro de una clase, pero NO en un método.
Punto-10
Una enumeración declarada fuera de una clase NO debe marcarse como estática, final, abstracta, protegida o privada
Punto-11
Las enumeraciones pueden contener constructores, métodos, variables y cuerpos de clases constantes.
Punto-12
Las constantes de enumeración pueden enviar argumentos al constructor de enumeración, usando la sintaxis BIG(8), donde el literal int 8 se pasa al constructor de enumeración.
Punto-13
Los constructores de enumeración pueden tener argumentos y pueden sobrecargarse.
Punto-14
Los constructores de enumeración NUNCA se pueden invocar directamente en el código. Siempre se llaman automáticamente cuando se inicializa una enumeración.
Punto-15
El punto y coma al final de una declaración de enumeración es opcional.
Estos son legales:
- enum Foo {UNO, DOS, TRES}
- enum Foo { UNO, DOS, TRES};
Otro ejemplo simple de Java eNUM:
Las enumeraciones son listas de constantes. Cuando necesite una lista predefinida de valores que representen algún tipo de datos numéricos o textuales, debe usar una enumeración.
Siempre debe usar enumeraciones cuando una variable (especialmente un parámetro de método) solo puede tomar uno de un pequeño conjunto de valores posibles. Los ejemplos serían cosas como constantes de tipo (estado del contrato: "permanente", "temporario", "aprendiz") o indicadores ("ejecutar ahora", "aplazar la ejecución").
Si usa enumeraciones en lugar de números enteros (o códigos de cadena), aumenta la verificación en tiempo de compilación y evita que los errores pasen constantes no válidas, y documenta qué valores son legales para usar.
Entre, el uso excesivo de enumeraciones puede significar que sus métodos hacen demasiado (a menudo es mejor tener varios métodos separados, en lugar de un método que toma varias banderas que modifican lo que hace), pero si tiene que usar banderas o escribir códigos, las enumeraciones son el camino a seguir.
Este es un ejemplo muy simple de Java eNum
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
Producción:
1 |
Get enum value for Comapny 'eBay' : Value : E |