Tipos enumerados en java

diegopm2000
13 de Diciembre del 2001
Cual sería la mejor forma de definir un tipo enumerado en java, p.e, queremos un tipo que solo pueda tener los siguientes valores = {lunes, martes, miercoles, jueves, viernes, sabado, domingo} ?

Gracias

Oblongo
13 de Diciembre del 2001
La forma más sencilla sería meterlo en un array de strings.
String dias []={"lunes","martes",...,"Domingo"};
Y una forma más sofisticada es crearte una clase´.
Creandote los métodos que sean más convenientes.
En el ejemplo que te pongo la clase dia tiene dos constructores y un par de métodos. Uno que te pasa al día siguiente el valor del día actual que tiene el objeto y otro que te imprime en la pantalla el valor que tiene actualmente.

Espero que esto te ayude en algo. Lo cierto es que se te pueden ocurrir otras maneras de hacerlo, que las hay, depende de lo que quieras hacer después.

class dia {
String hoyEs= "";
String diasSemana [] = {"lunes","martes","miercoles","jueves","viernes","sabado","domingo"};

// constructor con un par metro tipo entero

dia (int numero) {
hoyEs = diasSemana[numero-1];
}

// constructor con un parametro tipo cadena

dia (String dato) {
hoyEs = dato;
}

String siguiente () {
int t = 0;

while (!hoyEs.equalsIgnoreCase(diasSemana[t++])){;}
if (t == 7) { t = 0; }

return (hoyEs = diasSemana[t]);
}
void imprimeDia () {
System.out.println ("El d¡a actual es: " + hoyEs);
}
}

class dias {

public static void main (String args[]) {
dia Objeto1 = new dia("Miercoles");
dia Objeto2 = new dia(1);
dia Objeto3 = new dia(7);
dia Objeto4 = new dia("sabado");

Objeto1.siguiente();
Objeto1.imprimeDia(); // imprime jueves

Objeto2.imprimeDia(); // imprime lunes
Objeto2.siguiente();
Objeto2.imprimeDia(); // imprime martes

Objeto3.siguiente();
Objeto3.imprimeDia(); // imprime lunes

Objeto4.siguiente();
Objeto4.siguiente();
Objeto4.siguiente();
Objeto4.siguiente();
Objeto4.imprimeDia(); // imprime miercoles

}
}

Si quieres compilar este ejemplo, crea un fichero de texto llamado dias.java con todo el código y compila con: javac dias.java. No con dia.java
Un saludo.