Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Baal_30 en 9 Abril 2015, 22:50 pm



Título: Clase con Enums
Publicado por: Baal_30 en 9 Abril 2015, 22:50 pm
Buenas, tengo dos clases de objeto creadas, y para cada una necesito un atributo que sea Enum (cada clase una enum diferente). He creado otra clase (que es como me lo piden) para crear las dos Enum, pero ahora no tengo ni idea de que forma ponerlo en la clase de los objetos como atributo. Por ejemplo, si la clase donde están las Enum, se llama Enumeraciones, en la clase del objeto 1, debo poner : private Enumeraciones (nombreDelAtributo)¿?

Un saludo.


Título: Re: Clase con Enums
Publicado por: Usuario Invitado en 9 Abril 2015, 23:19 pm
Hola nuevamente Baal,

  • Un Enum es un tipo de dato que nos permite crear objetos constantes (que no cambian) que están predefinidos en él. Aunque es dada esta limitación, igualmente podemos cambiarle valores en tiempo de ejecución.
Código
  1. public enum Days {
  2.    MONDAY("Nada"),
  3.    TUESDAY("Pasear al perro"),
  4.    WEDNESDAY("Organizar informe"),
  5.    THURSDAY("Nada"),
  6.    FRIDAY("Presentar avance proyecto X"),
  7.    SATURDAY("Reunirse con el equipo para el próximo sprint"),
  8.    SUNDAY("Ir a la playa");
  9.  
  10.    private String task;
  11.  
  12.    public String getTask() {
  13.        return task;
  14.    }
  15.    public void setTask(String task) {
  16.        this.task = task;
  17.    }
  18.    private DaysTasks(String task) {
  19.        this.task = task;
  20.    }
  21. }

Cabe aclarar que el constructor de un Enum debe ser private o package (modificador de acceso por defecto).

Para usar el enum DaysTasks en una clase, basta declarar una objeto de su tipo:

Código
  1. private DaysTasks dayTask;

Y podemos inicializarla a través de algún constructor:

Código
  1. public SomethingClass(DaysTasks dayTask) {
  2.    this.dayTask = dayTask;
  3. }

Y le pasaríamos una constante del enum así:

Código
  1. SomethingClass somethingClass = new SomethingClass(DaysTasks.MONDAY);

Cabe aclarar también, como dijimos que le podemos cambiar valores a las variables a través de su setter o cualquier método:

Código
  1. taskDay.setTask("Nueva tarea aquí");

Y podemos obtener la tarea a través del getter en éste caso:

Código
  1. String task = taskDay.getTask();
  2. System.out.println("La tarea del día lunes es: "+task);


Espero haya quedado claro, un saludo.



Título: Re: Clase con Enums
Publicado por: Baal_30 en 10 Abril 2015, 20:10 pm
Gus, eres una mina de oro :P

Una cosita más, el enum lo creas en otra clase aparte o ella misma es una clase, y en vez de poner public class nombre, pones : public enum nombre ¿?


Título: Re: Clase con Enums
Publicado por: Usuario Invitado en 10 Abril 2015, 21:03 pm
Sí, es una clase especial por lo que puede ir como interna o en un fichero aparte.


Título: Re: Clase con Enums
Publicado por: Baal_30 en 11 Abril 2015, 19:46 pm
Aaaah, ahora lo entiendo todo :O jaja

Muchas gracias Gus, como siempre genial tu ayuda :)

Modifico: Una cosita más, si tengo que hacer dos enum diferentes, hago dos clases separadas¿?


Título: Re: Clase con Enums
Publicado por: Usuario Invitado en 11 Abril 2015, 20:20 pm
Pues es obvio. Si los dos enums van a estar como propiedades en una clase, pues deberían estar en otro fichero.


Título: Re: Clase con Enums
Publicado por: Baal_30 en 12 Abril 2015, 00:18 am
Okey, gracias por todo :)