Tutorial Java Enum: ¿Qué es y cómo implementarlo?



Este artículo sobre el tutorial de Java Enum le proporcionará un conocimiento detallado de las constantes de Enum junto con ejemplos prácticos para una mejor comprensión.

los Enumeración en es una forma de definir una clase con constantes fijas y nombradas con sus respectivas usando la palabra clave enum. En esto ' Tutorial de enumeración de Java 'Artículo, aprenderemos adefinir la enumeración junto conejemplos para una mejor comprensión.

¿Qué es la enumeración?

Enums Java son clases que tienen un conjunto fijo de constantes o variables que no tienden a cambiar. La enumeración en Java se logra usando la palabra clave enum. El java enumeración las constantes son estático y final implícitamente. La función Enum está disponible desde JDK versión 1.5.





¿Por qué necesitamos la enumeración?

enumeración mejora la seguridad de tipos en la verificación en tiempo de compilación para evitar errores en tiempo de ejecución al evitar el código repetitivo. Por ejemplo, si tiene que seleccionar una posibilidad de la menor cantidad de opciones disponibles, diga,

Trabajo Tipo: (Contrato / Temporal / Permanente)



Empleado del tutorial de enumeración de Java

Entonces la mejor opción sería usar un enum. Porque enumeración se puede utilizar fácilmente en el interruptor. enumeración se puede atravesar. enumeración pueden tener campos, constructores y métodos. Por lo tanto, aumenta la verificación en tiempo de compilación y evita errores debido al paso de constantes no válidas, ya que ya ha documentado qué valores son legales para su uso.

Diferencias entre Enum y Class

Aunque una clase y una enumeración tienen una funcionalidad similar en el entorno Java, difieren en algunos aspectos. Discutamos las diferencias



Enum Clase
Las constantes de enumeración no se pueden anularLas constantes de clase se pueden anular
Enum no admite la creación de objetosApoyo de clase a la Creación de Objetos
Enum no puede extender otras clasesUna clase puede ampliar otras clases
enumeración cuna interfaz de implementoUna clase puede implementar la interfaz


Ejemplos prácticos de Enum

Ahora, para entender la enumeración de una manera mucho mejor, ejecutemos algunos ejemplos prácticos basados ​​en lo siguiente.

Definición de enumeración en Java

Enum se puede declarar dentro de una clase o fuera de una cdejar. Pero no se puede declarar dentro de ningún método. Tomemos un pequeño ejemplo para comprender su sintaxis, definición y declaración.

Sintaxis:

enumeración nombre {constantes}

En este ejemplo, hemos declarado el principal() método dentro enumeración

definición de paquete public class Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Salida

KTM

En este ejemplo, el principal() se declara el método fuera de de enum.

definición de paquete enum Color {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

//Salida:

YAMAHA

Enum utilizado en Switch Case

La enumeración también se puede utilizar en una declaración de cambio. Es importante que todas las sentencias case deben utilizar constantes de la misma enumeración que utiliza la sentencia switch. Veamos un ejemplo basado en esto.

Aquí, declararemos una enumeración con los días de la semana como sus elementos y pasaremos los datos en forma de cadena para imprimir los datos del caso coincidente.

paquete cambiado enum Día {DOMINGO, LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SÁBADO} clase pública Edureka {Día día público Edureka (Día día) {este.día = día} público vacío dayIsLike () {cambiar (día) {caso LUNES: System.out.println ('Hola, hoy es lunes') rompe el caso MARTES: System.out.println ('Hola, hoy es martes') rompe el caso MIÉRCOLES: System.out.println ('Hola, hoy es miércoles ') romper caso JUEVES: System.out.println (' Hola, hoy es jueves ') romper caso VIERNES: System.out.println (' Hola, hoy es viernes. ') romper caso SÁBADO: System.out.println (' Hola, hoy es su fin de semana ') caso de descanso DOMINGO: System.out.println (' Hola, hoy es un día festivo ') descanso predeterminado: System.out.println (' Introduzca un día válido. ') Descanso}} público estático void main (String [] args) {String str = 'LUNES' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

//Salida:

Hola hoy eslunes

Herencia usando enum

Básicamente, cualquier enumeración se representa como una clase que amplía la clase abstracta java.lang. Enum y tiene varios miembros estáticos. Por lo tanto, un enumeración no puede extender ninguna otra clase o enumeración no hay multiples herencias . Ejecutemos un ejemplo para entenderlo mejor.

Aquí, heredaremos el sistema operativo basado en el fabricante del teléfono.

sumar los dígitos en un entero java
paquete herencia importar java.util.ArrayList importar java.util.List public class Edureka {public static void main (String [] args) {Lista heredar = new ArrayList () heredar.add (LibraryEnum.FIRST) heredar.add (ClientEnum. google) para (elemento HTTPMethodConvertible: heredar) {System.out.println (element.getHTTPMethodType ())}} interfaz estática HTTPMethodConvertible {cadena pública getHTTPMethodType ()} enumeración estática LibraryEnum implementa HTTPMethodConvertible {PRIMERO ('Google Pixel'), SEGUNDO ( 'Huawei'), THIRD ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} static enum ClientEnum implementa HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

//Salida:

Google Pixel
Android uno

Enum con valores personalizados

Las enumeraciones tienen sus propios valores de cadena de forma predeterminada, también podemos asignar algunos valores personalizados a las enumeraciones. Consideremos el siguiente ejemplo.

enum Tráfico {ROJO ('DETENER'), NARANJA ('ESPERAR'), VERDE ('IR')}

En el ejemplo anterior, podemos ver que Traffic enum tiene tres miembros. A saber,

NARANJA ROJA y VERDE con sus propios valores personalizados diferentes PARAR, ESPERAR y VAMOS respectivamente.

Ahora, para usar el mismo tipo de enumeración en el código, se espera que sigamos algunos puntos que son:

  • Necesitamos crear constructor parametrizado para esta clase de enumeración. Porque sabemos que enumeración El objeto de la clase no se puede crear explícitamente, por lo que para inicializar usamos un constructor parametrizado.
  • los constructor no puede ser público o protegido debe tener privado o defecto modificadores. Si creamos público o protegido, permitirá inicializar más de un objeto que está totalmente en contra funcionalidad de enumeración.
  • Tenemos que crear un método getter para obtener el valor de enumeraciones.

Ejecutemos un programa basado en esto.

paquete tráfico enum TrafficSignal {RED ('DETENER'), VERDE ('IR'), NARANJA ('ESPERAR') private String action public String getAction () {return this.action} private TrafficSignal (String action) {this.action = action}} public class Edureka {public static void main (String args []) {TrafficSignal [] señales = TrafficSignal.values ​​() para (TrafficSignal señal: señales) {System.out.println ('nombre:' + señal.nombre () + 'acción:' + signal.getAction ())}}}

//Salida:

nombre: ROJO acción: PARAR
nombre: VERDE acción: IR
masculinoe: Acción NARANJA: ESPERAR

Enumeración en declaraciones if-else-if

Ahora, ejecutemos un programa basado en enumeración en declaraciones if-else-if. Aquí, encontraremos la dirección de recorrido pasando los valores de direcciones disponibles en la enumeración.

paquete Indicaciones enum Indicaciones {ESTE, OESTE, NORTE, SUR} public class Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Direction: East')} else if (dir == Directions.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : North ')} else {System.out.println (' Dirección: Sur ')}}}

//Salida:

Decircción: Norte

Diferentes métodos usados ​​con enum

Valores(): Cuando crea una enumeración, la Compilador de Java agrega internamente el valores() método. Este método devuelve un formación que contiene todos los valores de la enumeración.

//Sintaxis:

valores públicos estáticos de tipo enumeración [] ()

Descubriremos el valor de índice de un elemento en particular en una matriz.

valores del paquete enum Color {ROJO, VERDE, AZUL} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() for (Colour col: arr) {System.out.println ( col + 'en el índice' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

//Salida:

cadena dividida múltiples delimitadores java

ROJO en el índice 0
VERDE en el índice 1
AZUL en el índice 2
RED

Valor de(): EstaEl método se utiliza para devolver la constante de enumeración cuyo valor es igual al pasado como argumento al llamar a este método.

//Sintaxis:

public static enum-type valueOf (String str)

Aquí, encontraremos el costo de un teléfono en particular en función de la entrada que pasamos a la cadena.

valores del paquete de enum Mobile {Samsung (1099), Apple (1250), Google (1325) int precio Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('Lista de teléfonos móviles:') para (Mobile m: Mobile.values ​​()) {System.out.println (m + 'costos' + m.showPrice () + 'dólares' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Seleccionado:' + ret)}}

//Salida:

Samsung cuesta 1099 dólares
Apple cuesta 1250 dólares
Google cuesta 1325 dólares
Seleccionado: Samsung

Ordinal(): El intérprete de Java agrega el ordinal() método internamente cuando crea un enum. El método ordinal () devuelve el índice del valor de enumeración.

//Sintaxis:

public final int ordinal ()

Aquí, encontraremos el valor de índice de un elemento particular en una matriz. y también, la posición de la cereza.

Package ordinal enum Fruits {Apple, Banana, Cherry, Date, Saúco} enum Vegetables {Zanahoria, Remolacha, Frijoles, Tomate, Cebolla} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. valores () para (Frutas fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Frutas f1, f2, f3 f1 = Fruits.Apple f2 = Fruits.Cherry f3 = Fruits.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'viene después de' + f1)} Vegetables v1 = Vegetables.B Remolacha if (f1.equals (v1)) {System.out.println (' Incorrecto ')}}}

//Salida:

Manzana: 0
Plátano: 1
Cereza: 2
Fecha: 3
Saúco: 4
Cherry viene después de Apple

Ventajas de Enum

  • Enum en Java mejora tipo de seguridad
  • Enum está diseñado para ser fácilmente utilizable en cambiar casos
  • Enum puede ser atravesado
  • Enum puede tener campos, métodos, y constructores
  • Enum puede implementar interfaces
  • Enum no se puede extender un clase porque internamente se extiende Enum clase

Caso de uso de Enum: Juego de piedra, papel y tijeras

Usaremos enumeración en Java para crear nuestro juego infantil, la piedra (piedra) papel y tijeras . El siguiente código explica cómo.

paquete Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = new Scanner (System.in) System.out.println ('n Empecemos ... n') while (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('nTu turno (Ingrese s para una tijera, p para papel, t para piedra, q para salir): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} else if (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} else {System.out.println ( 'nPor favor, verifique la entrada y vuelva a intentarlo! n') validInput = false}} while (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt's My turn: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nEs mi turno: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nIt es mi turno: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor corta papel , I won! N ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper envuelve piedra, yo gané! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone rompe la tijera, gané! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! ¡Ganaste! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nEl número de pruebas: '+ numTrials) System.out.printf (' Gané% d (%. 2f %%) . Has ganado% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' ¡Adiós! ¡Espero que hayas disfrutado ...! ' )}}

//Salida:

Empecemos...
Tijera-Papel-Piedra
Tu turno (Ingresa s para tijeras, p para papel, t para piedra, q para salir):
s
Es mi turno: PIEDRA
La piedra rompe la tijera, ¡yo gané!
Tijera-Papel-Piedra
Tu turno (Ingresa s para tijeras, p para papel, t para piedra, q para salir):
q
El número de pruebas: 1Gané 1 (100,00%). Ganaste 0 (0.00%).
¡Adiós !, espero que lo hayas disfrutado ..!

Con esto, llegamos al final de este Tutorial de Java Enum. Espero que haya entendido el Enum en Java y su implementación a través de algunos ejemplos en tiempo real.

Ahora que has entendido enumeración conceptos básicos a través de este 'Tutorial de enumeración de Java', consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. Los cursos de formación y certificación Java J2EE y SOA de Edureka están diseñados para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja inicial en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Primavera .

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog “Java Enum Tutorial” y nos pondremos en contacto con usted lo antes posible.