domingo, 17 de abril de 2016

Enumerados, que son y para que nos sirven

El otro día en el trabajo, se me ocurrió la idea de utilizar los enumerados para el uso de constantes. Pero la verdad es que a la hora de llevarlo a la practica, no salió muy bien la cosa. A continuación indico una breve descripción de que es lo que son y para que nos pueden ser útiles, que lo son. 

Los enumerados son básicamente un conjunto de constantes, los cuales son declarados de forma parecida a una clase. Se introdujeron en Java a partir de la versión 1.5. y tienen mucho en común de otros tipos de lenguajes como C. Estas son algunas de sus principales características:
  • Los enumerados son en realidad subclases de carácter 'final' de Enum. 
  • Debido a ello permiten la creación de métodos y hereda otros como: 'name', 'ordinal' o 'values'. 
  • Cuando creamos un enumerado, sus atributos son creados como 'final' y 'static' de forma implícita (de ahí que se suelan escribir en mayúsculas).
  • Si no indicamos nada al imprimir por pantalla mostrará el mismo nombre de la variable. El mismo efecto que si usamos el método heredado 'name'.
  • El método 'values' nos permite iterar sobre sus valores como si fuera un array. 
public enum Color {
 NEGRO("BLACK"), BLANCO("WHITE");
 private final String engColor;
 private Color(final String engColor) {
  this.engColor = engColor;
 }
 public String getEngColor() {
  return engColor;
 }
};
public static void main(final String[] args) {
 for (Color color : Color.values()) {
  System.out.println(color);
  System.out.println(color.name());
  System.out.println(color.ordinal());
  System.out.println(color.getEngColor());
 }
}
  • El orden en el que declaramos los atributos del enumerado, marca su 'orden natural'. Este es el que se muestra cuando se usa el método 'ordinal' y el que utiliza por ejemplo 'compareTo' para indicar su un enumerado es mayor a otro.
public static void main(final String[] args) {
 int mayor = Color.BLANCO.compareTo(Color.NEGRO);
 System.out.println(mayor); //imprime 1
}
  • Podemos hacer uso de un enumerado dentro de un switch a modo de String (Algo que no permitía Java 5 y se soluciono en Java 7). 
public static void main(final String[] args) {
 Color blanco = Color.BLANCO;
 switch (blanco) {
 case BLANCO:
  System.out.println("Es blanco");
  break;
 case NEGRO:
  System.out.println("Es negro");
  break;
 }
}

No hay comentarios:

Publicar un comentario