Java: Ejemplo de uso de tipos enumerados (enum)

Los tipos enumerados sirven para restringir el contenido de una variable a una serie de valores predefinidos. Esto suele ayudar a reducir los errores en nuestro código.

A partir de Java SE 5.0 se incluyo una modalidad de tipos enumerados que mantiene la seguridad de los tipos. En la práctica viene a ser como si definiéramos nuestros propios tipos de variables.

En Java, los tipos enumerados se pueden definir fuera o dentro de una clase. Otra ventaja que traen los tipos enum de Java es que al ser una “especie de clase” podemos añadirles métodos, variables de instancia, constructores, etc… lo que los hace muy potentes.

A continuación os dejo un pequeño ejemplo que ilustra todos estos conceptos.

/*
 *   http://creativecommons.org/licenses/by-nc/3.0/deed.es
 */
package org.francho.java.ejemplos;

/*
 *
 * @author francho - http://francho.org/lab/
 */

/*
 * Un tipo enumerado "complejo", tiene sus propios métodos y constructor
 */

enum Vaso {
    // Tipos de vaso disponibles. Pasan al constructor su capacidad en cc.
    JARRA(500), TUBO(250), TERCIO(333), CAÑA(200);

    private int cc; // Variable interna donde almacenaremos la capacidad

    // Nuestro constructor nos fuerza a pasar parámetros al definir un nuevo tipo
    Vaso(int cc) {
        this.cc = cc;
    }

    // Devuelve la capacidad del vaso
    public int getCentimetrosCubicos() {
        return cc;
    }
}

/*
 * Definimos un tipo de bebida
 */

class BebidaCerveza {
    enum MarcaCerveza { AMBAR, GUINNESS, HEINEKEN } // Tipos enumerados sencillos. Solo tenemos estas marcas

    private Vaso vaso;
    private MarcaCerveza marca;

    BebidaCerveza(MarcaCerveza marca, Vaso vaso) {
        this.marca = marca;
        this.vaso = vaso;
    }

    public void servir() {
        System.out.println("Sirviendo " + vaso.getCentimetrosCubicos() + "cc. de cerveza " + marca);
    }
}

/*
 * Clase pública que prueba todo esto
 */

public class PruebaEnum {
    public static void main(String[] args) {
        BebidaCerveza birra = new BebidaCerveza(BebidaCerveza.MarcaCerveza.AMBAR, Vaso.JARRA);

        birra.servir();
    }
}
About these ads

Acerca de francho

Maño, unutopico, geek, artesano de software, aprendiz ágil, programador Android en activo, sysop retirado, linuxero de corazón, papá a tiempo completo... Más en francho.org/about

Publicado el 7 enero, 2010 en Java y etiquetado en , , . Guarda el enlace permanente. 6 comentarios.

  1. Gracias Francho, me ha sido de mucha ayuda. Gracias.

  2. De nada. Me alegro de que te haya servido

  3. Gracias por la explicación!
    ademas es un buen ejemplo
    me ha servido de mucho!!

  4. ¿Es más correcto si haces los enum públicos? Porque en mi IDE hasta que no lo he hecho me daba un warning.
    Saludos y gracias!

  5. nessiagp eso depende del ámbito donde los vas a usar. Si los quieres usar fuera del paquete debes declararlos públicos como indicas.

    Un saludo

  6. Les faltó en que recipiente se servira en la impresión. Saludos ¡

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.003 seguidores

%d personas les gusta esto: