public class ArregloFinal {
private final static String[] diasSemanas={"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
public static void main(String[] args) {
System.out.println("Hoy es "+diasSemanas[0]);//Salida: “hoy es Lunes”
}
}
Esto crea dificultades al programar ya que aunque importemos en forma estática desde otra clase el arreglo y trabajar en base a él, debemos aprender el índice de cada elemento para poder llamarlo, otra manera sería trabajar con colecciones Hashmap (clave, valor) pero sería más fácil trabajar con un concepto viejo en programación pero relativamente nuevo en java 5.0: Las Enumeraciones.
Las enumeraciones se introdujeron en java 5.0 a nivel de clase, todas las enumeraciones hereden de la clase java.lang.Enum, que contiene métodos que discutiremos posteriormente en este mismo artículo. Javac al encontrar la palabra clave enum interpreta esa enumeración como una clase y por ello no puede haber un enum public en un archivo que ya contiene una clase pública, además también podemos tenerla dentro de una clase como una clase interna.
Con las enumeraciones, podemos crear una variable que almacenen datos específicos, veamos un código para entender mejor:
class Dias{
enum DiaSemana{lunes, martes, miercoles, jueves, viernes, sabado, domingo}
public static void main(String[] args) {
DiaSemana hoy = DiaSemana.jueves;
DiaSemana comienza = DiaSemana.lunes;
System.out.println("Semana comienza en "+comienza);
System.out.println("Hoy es "+hoy);
switch(hoy){
case lunes: System.out.println("Empezar a trabajar");
break;
case martes: System.out.println("Visitar Enfermos");
break;
//etc...
}
}
}
Puede verse que es mucho más fácil de manejar el código, la variable hoy puede almacenar cualquiera de los datos de lunes a domingo, por ejemplo podemos hacer que de acuerdo a un día el programa realice una actividad con un switch, en nuestro ejemplo anterior martes: visitar a los enfermos.
Bueno, los métodos que estudiaremos contenidos dentro de la clase java.lang.Enum, son ordinal() y compareTo() y name():
Ordinal devuelve el índice de la posición del elemento del enum (el primer índice es cero), por ejemplo hoy.ordinal(), devuelve tres.
En cuanto al método compareTo(), permite comparar dos valores de la enumeración, devuelve un entero negativo si el ordinal del invocador es menor al argumento, cero si sus ordinales son iguales o un número positivo si el ordinal del invocador es mayor.
hoy.compareTo(comienza) // devuelve un entero positivo ya que hoy es mayor
El último método que estudiaremos es name(), que devuelve por supuesto el nombre del ordinal.
hoy.name();//devuelve jueves
Por ser enum una clase puede contener propiedades y métodos:
Los dejo con el código para que analicen, una enum con propiedades y métodos:
enum EnumConMetodos{
Primero(1),
Segundo(2),
Decimo(10),
Otra(30);
private int bit;
private EnumConMetodos(int bitNumber) {
bit=bitNumber;
}
public int getBit(){
return(bit);
}
}
public class EnumExample{
public static void main(String[] args) {
EnumConMetodos elemento = EnumConMetodos.Decimo;//bit almacena 10
System.out.println("Elegido:"+elemento.ordinal()+"; con nombre:"+elemento.name()+";");
System.out.println(elemento.getBit());
}
}