Skip to main content

Tipo Enum en java 5

Encontré un articulo interesante que habla de los tipos enum en java, y bueno aqui está:

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. P. ej.:


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


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:


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).

Comments

Popular posts from this blog

Removing duplicates with awk

To remove duplicates in linux you can use awk command as follows:  awk -F- '!seen[$1]++' file.txt > output.txt where: -F is paraeter to deternime separator used to define columns and in ths case the dash 8-) is the sparator used '!seen[$1]++' is the expression used for the line in order to be printed > is the instruction to send command output o a file

Diferencias del Metodo equals() y ==

Por ejemplo, el tipo de datos int, en Java, es un tipo de dato de los llamados primitivos (más o menos como c++), con lo cuál puedes utilizar los operadores lógicos y aritméticos de la forma habitual. En tu caso puedes utilizar el operador == de la manera normal. Sin embargo, Integer, no es un tipo de dato primitivo. Es una clase!!. Entoces cuando tú tienes un objeto del tipo Integer NO estás manejando su valor, sino un puntero a tu objeto Integer. Porque en Java todo son punteros (menos los tipos de datos primitivos). Así que cuando utilizas el operador == no estás comparando el valor de los integer, sino los punteros (las direcciones que apuntan al objeto). De modo que para objetos estás obligado a utilizar el método equals().

Configuring web application with gwt+spring+hibernate

Building a web application using hibernate, spring and gwt. This time we will show how to create and cofigure an application that will use hibernate , spring and gwt. I will use HR sample database that comes with OracleXE. First , you have to create a GWT project (you can follow the steps for that on  https://developers.google.com/web-toolkit/ ) After you have the project created you need to create a tree of packages like that: Open HumanResources.gwt.xml and add the following line : By doing that you tell gwt to include model package and all dependent packages into gwt compilation Now we can start configuring spring and hibernate. to configure spring first you have to add the following lines on web.xml This will allow spring context to start doing its business. The you will have to create a field called "app-config.xml" in which you will define the settings for spring and hibernate. Over this app-config file first configure the properties as follo...