En Java 5 se permite que una variable tenga solo un valor dentro de un conjunto de valores predefinidos, en otras palabras, valores dentro de una lista enumerada. Los tipos enumerados sirven para restringir la selección de valores a algunos previamente definidos, p. ej., si tenemos una aplicación para la venta de café en vasos de diferentes tamaños pero no queremos que los tamaños sean diferentes a CHICO, MEDIANO y GRANDE, podemos crear un tipo enumerado para delimitar dicha selección:
enum TamanoDeCafe{CHICO,MEDIANO,GRANDE};
Posteriormente, al elegir un tamaño de café podemos hacerlo de la siguiente manera:
TamanoDeCafe tdc = TamanoDeCafe.MEDIANO;
enum instrumentos{ GUITARRA, TROMPETA, BATERIA, BAJO }; public class Enumerados { public Enumerados() { } public static void main (String... args){ instrumentos in = instrumentos.BATERIA; System.out.println(in); EnumDentroClase edc = new EnumDentroClase(); edc.tamano = EnumDentroClase.TamanoDeCafe.CHICO; System.out.println(edc.tamano); } } class EnumDentroClase{ enum TamanoDeCafe {GRANDE,MEDIANO,CHICO}; TamanoDeCafe tamano; }
Nota: el punto y coma (;) al final de la declaración del tipo enumerado es opcional.
Al ejecutar el código anterior, obtenemos:
BATERIA
CHICO
Declarar constructores, métodos y variables dentro de un tipo enumerado::
enum TamanoCafe{ CHICO(5), MEDIANO(8), GRANDE(10); private int onzas; TamanoCafe(int onzas){ this.onzas = onzas; } public int getOnzas(){ return this.onzas; } } public class Cafe { TamanoCafe tc; public Cafe() { } public static void main(String... args){ Cafe c1 = new Cafe(); Cafe c2 = new Cafe(); c1.tc = TamanoCafe.GRANDE; c2.tc = TamanoCafe.CHICO; System.out.println("Tamaño de café 1(c1): "+c1.tc); System.out.println("Tamaño de café 2(c2): "+c2.tc); System.out.println("Onzas 1(c1): "+c1.tc.getOnzas()); System.out.println("Onzas 2(c2): "+c2.tc.getOnzas()); } }
Al ejecutar el código anterior obtendremos lo siguiente:
Tamaño de café 1(c1): GRANDE
Tamaño de café 2(c2): CHICO
Onzas 1(c1): 10
Onzas 2(c2): 5
Algunos puntos importantes sobre los constructores de los tipos enumerados:
Esto es todo con respecto a los tipos enumerados. ¿Alguna duda? deja tu comentario.
Más sobre programación en Java aquí.
muy buena explicacion muchas gracias!!!!
ResponderBorrarNo hay problema. Gracias por tu comentario. Saludox.
ResponderBorrarMuchas gracias por la información
ResponderBorrarSaludos
Danny
Gracias por el ejemplo, me ha ayudado mucho...
ResponderBorrarMuy buen ejemplo
ResponderBorrarhola, soy estudiante de ciclo de grado superior de informatica y tengo ciertas dudas con un problema parecido al de los cafés. Se nos pide que mostremos tres tipos de lavado de un autolavado de coches (BASICO,NORMAL,SUPER) junto con el tiempo en minutos de cada tipo (3,5,8), pero no se seria exactamente como tu ejemplo del cafe. ¿Podrias echarme una mano? Gracias
ResponderBorrarmuchas gracias por la informacion, muy util.
ResponderBorrarHola tu ejemplo es muy bueno, lo que aun me causa ruido es en que momento le das valor al atributo onzaz, es decir de donde sale la ultima informacion que se imprime (el 10 y el 5)
ResponderBorrarEl valor de 10 y 5 sale:
ResponderBorrarSystem.out.println("Onzas 1(c1): "+c1.tc.getOnzas());
System.out.println("Onzas 2(c2): "+c2.tc.getOnzas());
en el enum esta declarado que grande es de 10 onzas, mediano de 8 onzas y chico de 5 onzas ;-)
ufff que buena información la que encontré aquí, me fue super util para un proyecto de simulación de una sala de cine, me ahorro mucho tiempo, pues simplemente cree un tipo de película (debido a las restricciones de edad que permiten la entrada de ciertas personas de edad a un genero de películas en especifico)
ResponderBorrarpublic enum Tipo_pelicula {
ACCION,
SUSPENSO,
JUVENIL,
ROMANCE
}
y luego solo debia llamarlas en la clase donde se genera la cartelera del cine asi:
public void GenerarPeliculas()
{
Pelicula objPelicula1=new Pelicula("Rescate Explosivo",Tipo_pelicula.ACCION);
Pelicula objPelicula2=new Pelicula("Duro De Matar",Tipo_pelicula.ACCION);
...
}
genial, gracias
Copia casi textual del libro de Kathy Sierra para la certificación java 6.
ResponderBorrarexelente material! felicitaciones!
ResponderBorrarCopia de libro para certificacion.
ResponderBorrarNo entiendo porque das las gracias, tal vez porque tradujiste el libro?
Saludos
No importa que sea la copia de un libro, lo importante es que comparte el conocimiento a los que no tenemos acceso a ellos. Se agradece se tomen la molestia de trascribir el conocimiento.
ResponderBorrarla vdd esk no c programar estoy en cero y sus esplicaciones son exelentes. pero kisiera preguntarle es dificil aprender a programar??? k es lo k necesito.
ResponderBorrarsoy de tenacingo,edo de mex
veo que la publicacion es un poco vieja pero no por eso deja de ser bueno, muchisimas gracias muy buena explicacion. nos vemos
ResponderBorrarNitido man
ResponderBorrargrax me sirvio xD
ResponderBorraren la vida real si son usados estos tipos? es decir para tipos de elementos usualmente uno usa un catalogo con datos desde la base de datos, en aplicaciones empresariales si son usados?
ResponderBorrarQué tal,
ResponderBorrarEl uso de los tipos enumerados depende directamente del programador. Es cierto que normalmente para un catalogo de opciones utilizamos el contenido de una tabla en la bd, sin embargo, existen casos muy particulares en los cuales los enums son bastante útiles, por ejemplo, cuando tienes un catalogo de pocas opciones que es casi seguro no cambiará por lo que una consulta a la bd es más un gasto de recursos.
En lo particular sí utilizo los tipos enumerados en casos similares al que te comento.
Espero haberte ayudado. Saludox.
Gracias por la informacion muy buena, pero por que se usa el parentesis enfrente de Enum por ejemplo:
ResponderBorrarpublic enum Suit
{
ESPADAS("espadas"),
CORAZONES("corazones"),
AZ("az"),
DIAMANTES("diamantes");
public final String nombre;
private Suit(String nombre)
{
this.nombre=nombre;
}
public String getNombre()
{
return nombre;
}
}
Si no pongo los datos enfrente del parentesis me marca un error de compilacion..
de antemano gracias...
Qué tal,
ResponderBorrarEn el código que indicas no logro detectar tu duda, tal vez quieras formular tu pregunta de una manera distinta o indicarme exactamente en qué línea tienes dudas.
Saludos.
Este blog ha sido eliminado por un administrador de blog.
ResponderBorrarInteresante tema sombre los enumerados, de todo lo que llevo estudiado nunca me hablaron de ellos y se me hacen algo especiales es como una estructura de datos contenida en una clase, eso es mas o menos lo que me imagino pero muy buen tema gracias
ResponderBorrarBuenas! me sirvio la info te tomo como referencias.
ResponderBorrarTe dejo mi url : http://java-white-box.blogspot.com.ar/
Saludos
gracias me sirvio de mucho tu tutorial...
ResponderBorrarBueno que si eres bueno. Cuando busco un tema en el Google me envía a tu pagina siempre. Gracias por compartir.
ResponderBorrarMás claro no canta un gallo, para este ejemplo, Anonymus. Se te agradece tu aportación. Mi duda es otra. Es un applet el twit ? cómo se puede hacer uno parecido para la pagina donde trabajo ? Gracias anticipadas.
ResponderBorrarHola, Soy estudiante de la utn de rosario. Me gusta la forma en la q explicas. No podríamos juntar para q me expliques lo dl tamaño del cafe? Bueno te dejo mi num +543414457843.;)
ResponderBorrarFabio,
ResponderBorrarAgradezco tu comentario pero vivo en México y no sería posible llevar a cabo dicha reunión :yaoming:
Saludos.
EXCELENTE EXPLICACIÓN! ME FUE MUY ÚTIL. ESTOY EN CURSO DE JAVA Y LA PROFESORA NO SUPO EXPLICARLO. DECÍA QUE LE MARCABAN ERRORES POR PROBLEMAS DEL IDE. JAJAJAJA.
ResponderBorrar