Foro de elhacker.net

Programación => Java => Mensaje iniciado por: XafiloX en 20 Octubre 2010, 19:07 pm



Título: Meditaciones metafisicas sobre el ENUM
Publicado por: XafiloX en 20 Octubre 2010, 19:07 pm
Hoy por primera vez he utilizado el ENUM en JAVA y la verdad, me ha asaltado una pequeña duda...El enum...¿qué es? ¿Se puede considerar una clase? Tiene una sintaxis muy extraña a la forma de declararlo que no corresponde del todo a la de una clase, sin embargo, si que puede tener constructor...


Título: Re: Meditaciones metafisicas sobre el ENUM
Publicado por: Franki en 20 Octubre 2010, 21:12 pm
El Enum realmente es una clase y sirve para almacenar valores relacionados y operar sobre ellos.

Antes de la existencia del enum se solía realizar una clase estática con un conjunto de constantes estáticas. Ahora simplmente creas una nueva enumeración que puedes utilizar.


Título: Re: Meditaciones metafisicas sobre el ENUM
Publicado por: XafiloX en 20 Octubre 2010, 22:52 pm
Pero si es una clase, cómo es que puede hacer cosas como estas:
Código
  1. enum lugares2{
  2.      ORIGEN(0), CUADRANTE1(1), CUADRANTE2(2), CUADRANTE3(3), CUADRANTE4(4), SEMIEJEXPOSITIVO(5),
  3. SEMIEJEXNEGATIVO(6), SEMIEJEYPOSITIVO(7), SEMIEJEYNEGATIVO(8);
  4. }
Eso en una clase normal no se puede hacer, ¿no? Además, ¿no debería empezar su nombre por class?  :-\


Título: Re: Meditaciones metafisicas sobre el ENUM
Publicado por: Franki en 21 Octubre 2010, 10:27 am
Te explico, el enum tiene una sintaxis particular dentro del lenguaje Java, pero internamente está representado por la clase Enum:

http://download.oracle.com/javase/6/docs/api/java/lang/Enum.html

Un ejemplo sencillo, ímaginate que necesitas controlar que un botón esté activo o inactivo y según su estado ejecutes un bloque de instrucción o otro.

Actualmente con el enum harías algo así:

enum Estado {Activo, Inactivo};

Y ya dentro de tu clase, en el método que comparara el estado podrías hacer algo así:

if(boton.getEstado() == Estado.Activo )
//blabla

Antes de la existencia del Enum tenías que crearte una clase aposta con ese conjunto de constantes estáticas:

class Estado{
static final int Activo == 1;
static final int Inactivo == 0;
}

Este es un ejemplo muy chorra, pero las enumeraciones pueden ser muy potentes, pues definirles un constructor y métodos internos.



Título: Re: Meditaciones metafisicas sobre el ENUM
Publicado por: XafiloX en 21 Octubre 2010, 15:48 pm
OK, muchisimas gracias por la explicacion  :D