Buenas,
En este tema veremos la estructura/clase enum
y sus aplicaciones en clases y objetos.
Enum es una clase especial que sirve para declarar una lista de objetos constantes los cuales usualmente se usan para representar el estado de otro objeto.
Como es una clase, se le aplican las características de la POO que ya hemos visto.
Ademas, esta clase se puede declarar dentro o fuera de otra clase.
Sintaxis Enum
Comencemos con la sintaxis básica, para crear una lista de constantes:
Sintaxis
[modificador de acceso] enum [Nombre]
{
[lita de elementos]
}
Ejemplo
public enum Emociones
{
ALERGIA, TRISTEZA, ENFADO
}
Al ser una clase, también puede disponer de una serie de métodos y atributos.
Sintaxis
[modificador de acceso] enum [Nombre]
{
[lita de elementos];
[atributos];
[metodos];
}
Ejemplo
public enum Emociones {
ALEGRIA,
TRISTEZA,
ENFADO;
private final String descripcion;
private Emociones(String d)
{
descripcion = d;
}
public String getDescripcion()
{
return descripcion;
}
}
Usar Enum
Es muy sencillo, no muy diferente al uso de clases convencionales.
Instanciar un objeto
new [NombreEnum]([parametros])
Aunque normalmente se usara como valor. Para eso simplemente se llama a la constante deseada de la siguiente manera:
Llamar constante/elemento
[NombreEnum].[CONSTANTE]
Por ejemplo:
Emociones.ALERGIA
Enum y String
Si queremos convertir un objeto de una lista enum
a String
(mediante el uso implícito del metodo toString()
), predeterminadamente se devolverá el nombre del objeto, pero, tenemos la posibilidad de declarar el método toString()
Ejemplo
public enum Emociones
{
ALERGIA
{
public String toString()
{
return "Alegria. :)";
}
},
TRISTEZA
{
public String toString()
{
return "Tristeza. :(";
}
},
ENFADO
{
public String toString()
{
return "Enfado. >:(";
}
;
}
Esto hará que al (por ejemplo) imprimir una de las constantes del enum, se imprima la cadena que devuelve el método toString()
:
System.out.println(Emociones.ENFADO); // Imprime "Enfado. >:(".
Clase de ejemplo
Colores.java
public enum Colores
{
ROJO
{
public String toString()
{
return "Rojo";
}
},
VERDE
{
public String toString()
{
return "Verde";
}
},
AMARILLO
{
public String toString()
{
return "Amarillo";
}
};
}
Esta clase enum podría estar perfectamente integrada como atributo en la clase semáforo.
Semaforo.java
public class Semaforo
{
Colores color; // Atributo que guarda el estado del semaforo.
public Semaforo(Colores e)
{
color = e;
}
public void pararTrafico()
{
color = Colores.ROJO;
}
public void iniciarTrafico()
{
color = Colores.VERDE;
}
public void pre_pararTrafico()
{
color = Colores.AMARILLO;
}
public Colores getColor()
{
return color;
}
}
PruebaSemaforo.java
public class PruebaSemaforo
{
public static void main(String[] args)
{
Semaforo miSemaforo = new Semaforo(Colores.AMARILLO);
System.out.println("El semáforo es de color " + miSemaforo.getColor() + ".");
miSemaforo.pararTrafico();
System.out.println("El semáforo es de color " + miSemaforo.getColor() + ".");
}
}
Output
El semáforo es de color Amarillo.
El semáforo es de color Rojo.
En el siguiente tema nos adentraremos de forma teórica en el mundo de las Excepciones, el cual es fundamental entender para poder hacer programas e infraestructuras solidas y capaces de reaccionar ante situaciones no contempladas.
- Indice.
- → Siguiente: Curso básico de Java - #19 - Excepciones: Introducción
- ← Anterior: Curso basico de Java - #17 - POO: Herencia