Anuncios

Bienvenidos sean a este post, durante algunos posts estuvimos hablando sobre los arrays y los arraylists pero nunca mencionamos una particularidad, estos son denominados como Colecciones, y hoy hablaremos sobre la coleccion faltante.

Anuncios

La enumeracion o enum es una especie de clase “particular” porque nos permite crear un grupo de constantes que puede ser una coleccion o un conjunto, al ser constantes no podremos modificarlas bajo ninguna circunstancia, esto es ideal para cuando necesitamos trabajar con varios valores constantes en nuestro juego, programa o aplicacion, su sintaxis es la siguiente:

enum nombreEnum
{
    valor1,
    valor2,
    ...
    valorN
};
Anuncios

Siempre comienzan con enum seguidos del nombre que le asignaremos y en el bloque entre llaves iremos poniendo los distintos valores (en realidad nombres de constantes) que tendra, podremos poner todos lo que necesitemos sin limite alguno.

Anuncios

Aca les dejo un ejemplo tipico de enum:

enum meses
{
    ENERO,
    FEBRERO,
    MARZO,
    ABRIL,
    MAYO,
    JUNIO,
    JULIO,
    AGOSTO,
    SEPTIEMBRE,
    OCTUBRE,
    NOVIEMBRE,
    DICIEMBRE
};
Anuncios

Donde cada posicion de este enum sera representada por el nombre del mes, entonces nosotros podriamos usarlo para en lugar de usar el numero que lo representa en la fecha por directamente una de las constantes equivalentes.

Anuncios
Nota: La "clase" enum siempre es publica, estatica y final lo cual hace que no se puede sobreescribir tampoco puede crear objetos y/o extender una clase pero si puede implementar interfaces.
Anuncios

Para entender mejor el concepto vamos a realizar el siguiente ejemplo para ello vamos a crear el siguiente proyecto:

  • Dispositivos: Phone and Tablet
  • Actividad: No Activity
  • Nombre: Enumerando
  • Nombre de paquete: org.example.enumerando
  • API Minimo: API 14 (Android 4.0)
Anuncios

Una vez creado nuestro proyecto procederemos a crear el nuevo modulo de Java, para ello deben ir a File -> New -> New Module, aparecera un nuevo cuadro y seleccionen Java or KotLin Library, presionen Next y en el siguiente cuadro completen los campos de la siguiente forma:

  • Library name: enumerando
  • Class name: Enumerando
  • Language: Java
Anuncios

Una vez completado todo presionen Finish para crear el nuevo modulo, antes de pasar al programa principal vamos a crear una nueva clase y para ello haremos click con el boton derecho donde esta nuestra clase y seleccionaremos New->Java Class, y completaremos los siguientes campos:

  • Nombre: TipoSoldado
  • Tipo: Enum
Anuncios

Con esto den Enter y generara una nueva clase, ahora iremos a nuestra nueva clase y agregaremos el siguiente codigo:

TipoSoldado.java

package org.example.enumerando;

public enum TipoSoldado {
    SOLDADO,
    MARINO,
    SNIPPER,
    INGENIERO,
    ESPIA
}
Anuncios

En este caso al enum ya generado le agregaremos los distintos tipos de soldados que estan disponibles en nuestro ejercito, con esto simplemente pasaremos a nuestra primer clase y le agregaremos el siguiente codigo:

Enumerando.java

package org.example.enumerando;

import java.util.Random;

public class Enumerando {

    public static void main(String args[]){
        Random random = new Random();
        int alazar = random.nextInt(5);
        String [] arreglo = new String[5];
        for(TipoSoldado t:TipoSoldado.values()){
            arreglo[t.ordinal()] = t.toString();
        }

        switch (alazar){
            case 0:
                System.out.println("Es un " + arreglo[alazar]);
                break;
            case 1:
                System.out.println("Es un " + arreglo[alazar]);
                break;
            case 2:
                System.out.println("Es un " + arreglo[alazar]);
                break;
            case 3:
                System.out.println("Es un " + arreglo[alazar]);
                break;
            case 4:
                System.out.println("Es un " + arreglo[alazar]);
                break;
        }
    }
}
Anuncios
Anuncios

En este codigo tenemos nuestro metodo main, ya saben que es el corazon para ejecutar el codigo de Java cuando lo usamos directo en el post anterior lo explique mejor, para esta ocasion primero creamos un objeto de tipo Random para generar numeros al azar, la siguiente es una variable de tipo int para recibir alguno de los numeros al azar que generamos por medio de random y nextInt entre parentesis le indicamos la cantidad que debe calcular para esta ocasion solo cinco porque mas no tenemos, luego crearemos un array de tipo String con capacidad para cinco elemento, el siguiente es un bucle generico que pasara por los valores del enum, la primera variable es para almacenar los valores obtenidos, lo que sigue a los dos puntos es el iterador que pasara por el enum, el metodo values se encarga de devolver cada uno de los valores que poseemos, en este caso el bucle generico nos asegura que pasara por todos los elementos del enum, coleccion o lo que sea de este tipo, en el cuerpo tendremos nuestro array llamado arreglo donde la posicion la indicaremos por medio del metodo ordinal, ya que este nos devolvera el valor de la posicion asignado a la constante, esto podemos hacerlo porque t es el valor de la constante, es decir que esto:

t.ordinal()
Anuncios

Equivale a hacer esto:

TipoSoldado.ESPIA.ordinal()
Anuncios
Anuncios

Siendo la constante cada una de las que posee, con esto tenemos el lugar de nuestro array luego almacenamos el valor de la constante pero para esta ocasion usamos el metodo toString para convertirlo al mismo tipo que el array, nuestro siguiente paso sera un switch donde evaluara el numero almacenado en alazar y lo compara con cada uno de los posibles, en caso de coincidencia muestra en pantalla la constante que le almacenamos en base a la posicion del mismo, podemos probarlo pero vamos a tener el mismo inconveniente que en el post anterior y para ello debemos ir al boton que figura como app con una cruz roja, y seleccionen Edit Configurations, nos aparecera una nueva ventana donde deben apretar el boton con el signo mas (+) y seleccionen del menu Application, en este caso se nos aparecera un nuevo cuadro y deberemos completar los siguientes datos:

  • Name: Soldados (pueden usar cualquiera pero mejor algo que lo identifique correctamente)
  • Main class: org.example.enumerando.Enumerando
  • Use classpath of module: enumerando
Anuncios

Con estos tres campos alcanza para que nuestro codigo funcione, presionen Ok y ahora si podran probar el codigo como se ve en el siguiente video

Si tienen alguna duda podemos hacer una simple modificacion para poder ver como es generado el enum, lo que debemos hacer es primero modificar el bucle for por el siguiente:

        for(TipoSoldado t:TipoSoldado.values()){
            arreglo[t.ordinal()] = t.toString();
            System.out.println(t.ordinal() + " : " + t);
        }
Anuncios

Como pueden ver solo agregamos una linea para mostrar los datos, despues del bucle agregaremos esta linea:

System.out.println("El numero al azar es: " + alazar);
Anuncios

Con esta mostraremos el numero que se nos genera al azar, si lo compilamos y probamos veremos lo siguiente

Anuncios

Como pueden observar primero tenemos el listado de las posiciones que ocupan seguido del valor constante, despues nos dice que numero se eligio al azar y como hubo coincidencias, esto lo hice asi para que se vea como trabaja pero en la realidad ustedes no mostraran el valor de la constante sino que trabajaran con las mismas para una coincidencia.

Anuncios

En resumen, hoy hemos visto la clase enum, o mejor dicho la coleccion enum, como se genera, como trabaja, para que nos puede servir, las particularidades que posee, como se pueden emplear en un ejemplo, cuales son sus propiedades predeterminadas y como nos pueden beneficiar, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00