Java - Los tipos enumerados - Enum - Declarar constructores, métodos y variables dentro de un tipo enumerado

Buenas, hoy vamos hablar de los Enum que son y para que sirven.



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;

No es necesario que las constantes dentro de los enums estén en mayúsculas pero en las convenciones de código de Sun se pide hacerlo de esta manera. Se debe tomar en cuenta que un tipo enumerado puede ser declarado dentro o fuera de una clase, pero NO dentro de un método.

Los tipos enumerados no son enteros o cadenas, cada uno es simplemente una instancia del tipo enumerado del que es declarado. Se puede pensar como una especie (no exactamente) de arreglo de variables estáticas finales. Además de constantes dentro de un tipo enumerado, existen algunas otras cosas que puede tener.



Declarar constructores, métodos y variables dentro de un tipo enumerado

Debido a que los tipos enumerados son como una clase de tipo especial en Java, hay muchas cosas que se pueden realizar dentro de un enum, además de declarar constantes, un tipo enumerado puede contener constructores, métodos y variables.

Tomando nuestro ejemplo del tamaño de café, podemos pensar en escenario donde además de saber el tamaño del café necesitemos la cantidad en onzas de cada tamaño, esto podemos hacerlo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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:

  •  No se puede invocar al constructor directamente, este se invoca una vez que se crea el tipo enumerado y es definido por los argumentos utilizados para crearlo. 
  •  Se puede definir más de un argumento en un constructor de un tipo enumerado, asimismo, se puede definir más de un constructor para un tipo enumerado siempre y cuando este tenga argumentos diferentes(sobrecargar el constructor).

Esto es todo con respecto a los tipos enumerados. ¿Alguna duda?


Saludos
Java - Los tipos enumerados - Enum - Declarar constructores, métodos y variables dentro de un tipo enumerado Java - Los tipos enumerados - Enum - Declarar constructores, métodos y variables dentro de un tipo enumerado Reviewed by El lado oscuro de java on mayo 08, 2012 Rating: 5

1 comentario:

Con la tecnología de Blogger.