Alan Dromundo Arias
Auler Josby Cordoba Roa
Brother creo que tus apuntes me ayudaron a comprender mejor el alcance de esta lección.
Estalin Quispe
gracias amigo, me ayudaste a comprender .
Los enumerations son tipos de datos muy especiales pues este, es el único en su tipo que sirve para declarar una colección de constantes, al ser así estaremos obligados a escribirlos con mayúsculas.
Usaremos enum cada vez que necesitemos representar un conjunto fijo de constantes. Por ejemplo los días de la semana.
Así podemos declarar un enumeration usando la palabra reservada enum.
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
Puedo crear referencias de enumerations de la siguiente forma:
Day day; switch (day) { case MONDAY: System.out.println(“Mondays are good.”); break; case FRIDAY: System.out.println(“Fridays are nice”); break; case SATURDAY: case: SUNDAY: System.out.println(“Weekends are the best”); break; default: System.out.println(“Midweek are so-so”); break; }
Y puedo llamar un valor del enumeration así:
Day.MONDAY; Day.FRIDAY; Day.SATURDAY
Los enumerations pueden tener atributos, métodos y constructores, como se muestra:
public enum Day { MONDAY("Lunes"), TUESDAY("Jueves"), FRIDAY("Viernes"), SATURDAY("Sábado"), SUNDAY("Domingo"), private String spanish; private Day(String s) { spanish = s; } public String getSpanish() { return spanish; } }
Y para utilizarlo lo podemos hacer así:
System.out.println(Day.MONDAY);
Imprimirá: MONDAY
System.out.println(Day.MONDAY.getSpanish());
Imprimirá: Lunes
Alan Dromundo Arias
Auler Josby Cordoba Roa
Brother creo que tus apuntes me ayudaron a comprender mejor el alcance de esta lección.
Estalin Quispe
gracias amigo, me ayudaste a comprender .
Ronaldo Carbajal Tapahuasco
Luis Perugachi
Corrección uno es shuk y cuatro es tusku en quichua.
Emma Rosa Pilozo Solano
Excelente. Con tu aporte, me quedo bien Claro. Gracias por tu ayuda!
Stiven Trujillo
Para poder entender Enum es conveniente tener presente esto:
// internamente enum Day se convierte en class Day { public static final Day SUNDAY = new Day(); public static final Day MONDAY= new Day(); public static final Day TUESDAY= new Day(); // etc... }
Walter Omar Barrios Vazquez
Gracias por la aclaración.
Fernando Javier España Córdoba
Se deben colocar los enumerados separados por coma, al finalizar de la definición de todos los posibles valores un punto y coma. Ademas los métodos deben ser públicos.
public enum Day { MONDAY("Lunes","Lundí"), TUESDAY("Martes", "Mardí"), WEDNESDAY("Miercoles","Mercredi"), THURSDAY("Juees", "Jeudi"), FRIDAY("Viernes","vandredi" ), SATURDAY("sabado", "Samedi"), SUNDAY("Domingo", "dimanche"); private String spanish; private String french; private Day(String s, String f) { spanish = s; french = f; } public String getSpanish() { return spanish; } public String getFrench() { return french; } }```
Jan Adams
Me dejo un poco confundido, ya que tuesday es martes en ingles y no jueves
Luis Salas
Haha, well played.
Auler Josby Cordoba Roa
JAJAJA muy divertido
Pedro Leonel Altamirano
Estaba analizando el enum y decidí agregarle indices a los días para probar únicamente. Me di cuenta que el constructor de esta clase es privado y al principio no entendía por qué.. Pero entendí que si fuera público se podrían cambiar las constantes, que obviamente no queremos que se cambien, desde afuera y es por eso que da error si lo ponemos como público.
public enum Day { MONDAY("Lunes",1), TUESDAY("Jueves",2), FRIDAY("Viernes",3), SATURDAY("Sábado",4), SUNDAY("Domingo",5); private String spanish; private Day(String s,int a) { //<<Constructor Privado spanish = s; } public String getSpanish() { return spanish; } }
Cesar Ponte
recreando el ejercicio, pude notar que en los enumerados el separador debe ser "," de lo contrario genera error.
DICE: MONDAY("Lunes");TUESDAY("Martes");WEDNESDAY("Miércoles");THURSDAY("Jueves");FRIDAY("Viernes");SATURDAY("Sábado");SUNDAY("Domingo");
DEBE DECIR: MONDAY("Lunes"),TUESDAY("Martes"),WEDNESDAY("Miércoles"),THURSDAY("Jueves"),FRIDAY("Viernes"),SATURDAY("Sábado"),SUNDAY("Domingo");
Franco Pignanelli
Si quieren complementar esta clase ya que no tiene video, les recomiendo esta clase universitaria para comprender la utilización de los enums de manera profesional ;) https://www.youtube.com/watch?v=hwlOxVDZ7kw&list=PLhU2otMFcLuCQPcEcRQfi3UQQ-ms5YH0L&index=16&t=484s
Edward Camilo Martinez Frias
Muchas gracias por el link, me quedo mucho mas claro ahora.
Agustin Diaz
gracias por compartir este link, tiene mucha info y es super explicativo! Me ayudo muchisimo :D
Juan Sebastian Galvis Huertas
Es un poco enredado entender como inicializar los Enum, y como el constructor nunca se usa realmente por que al ser constantes todo esta Hardcodeado, pero espero que esta implementacion junta sirva para algo
<code> public class Test { public enum Day { SATURDAY("Sabado", "土曜日"); private String spanish; private String japanese; private Day( String s, String j){ spanish = s; japanese = j; } public String getJapanese() { return japanese; } public String getSpanish() { return spanish; } } public static void main(String[] args) { Day day = Day.SATURDAY; switch (day) { case SATURDAY: System.out.println("Spanish: " + day.getSpanish() + ", Japanse: " + day.getJapanese(); break; default: System.out.println("Midweek are so-so"); break; } } }
Gerald Zamora
estas constantes deverian ir separadas con " , " en vez de " ; "
MONDAY("Lunes"); TUESDAY("Jueves"); FRIDAY("Viernes"); SATURDAY("Sábado"); SUNDAY("Domingo");
así
MONDAY("Lunes"), TUESDAY("Jueves"), FRIDAY("Viernes"), SATURDAY("Sábado"), SUNDAY("Domingo");
Iván Frías Gil
No me queda para nada claro lo de los tipos enumerados, tendré que ir a otro curso en otra plataforma para saber como y para qué se utilizan.
Richard Garcia
Iván cual es tu duda? A mi me quedo todo claro
Iván Frías Gil
No sé cuando se utilizan, ni como, la verdad. Lo he intentado pero es que no llego a comprender su utilidad.
Silvana Rolón
Hay muchas partes que no entendí, pero básicamente es como usar otra clase pero con la diferencia de que son constantes. En mi caso cree una clase nueva (lo hice dentro del package que tenia solamente mantenerlo "oculto"):
En el archivo Main:
Fabian Anzola
no entiendo como le funciono a los compañeros si hay que cambiar varias cositas, solo Jose Oscar da una pista de que se debe hacer, los demás entendieron aunque ni siquiera lo ejecutaron.
Jhon Jairo Castiblanco Mojica
enum Day{ SUNDAY,MONDAY,TUESDAY,WEDNESDAY, THURSDAY,FRIDAY, SATURDAY }
public static void saveValor(){ for (Day myVar: Day.values ()) { System.out.println (myVar); } } public static void main(String[] args) { MesDelAnio.saveValor (); }
}
Pablo Alejandro Figueroa
Milton Estrada
// Days.java public class Days { public enum Day { MONDAY("Lunes"), TUESDAY("Jueves"), FRIDAY("Viernes"), SATURDAY("Sábado"), SUNDAY("Domingo"); public String spanish; Day(String s) { spanish = s; } public String getSpanish() { return spanish; } } }
// Main.java for (Days.Day day:Days.Day.values()) { System.out.println(day+":"+day.getSpanish()); }
Josue Gelvez
Willy Jose Ruiz Hernández
Hola a todos!!! Si de algo puede servir, yo cree una clase aparte e hice respectivamente un método para llamarlo desde la clase _ "Main",_ con una pequeña lógica que funciona como un sencillo traductor de inglés a español.
Lo que hice en código fue crear una clase llamada "Days"_ y dentro de ella hice el arreglo "enum".
Cree las variables, con su constructor y los métodos Getters .
Luego cree un método estático llamado showDay, donde se le pregunta al usuario que escriba el día que desea traducir (en inglés), y el switch valida el día (en inglés) que ingresó el usuario y según el caso con el método get dentro del switch retorna el valor en español.
Una vez creado el método, lo llamo desde el método "main" en la clase que para mi caso se llama App, y corro el programa.
Espero que les sea de utilidad, yo se que es en principio un poco complicado de entender, yo también le dedique tiempo para llegar a este resultado y para comprender sobre todo como aplicarlo.
Datos curiosos sobre los enum:
Listo, el cómo mandar a llamar nuestro nuevo método ya lo explicó anncode, sólo quería dejar en claro algunos puntos que pudieron haberse explicado de mejor forma y con más profundidad, atando todo lo que hemos venido aprendiendo. El punto 3 es el que más me costó entender, espero no haber dejado más perdido a alguien con mi explicación.
Comparto aqui un código para poder iterar, a través de los valores, con fori y con forEach :D!
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; public class Password { //Here we have a num , a type date which declare a collection of constants public static enum Numero { UNO("One","Huk","Um"), DOS("Two","Iskay","Dois"), TRES("Three","Kinsa","Três"), CUATRO("Four","Tawa","Quatro"), CINCO("Five","Pisqa","Cinco"), SEIS("Six","Soqta","Seis"), SIETE("Seven","Qanchis","Sete"), OCHO("Eight","Pusaq","Oito"), NUEVE("Nine","Isqon","Nove"), DIEZ("Ten","Chunka","Dez"); private String english; private String quechua; private String portugues; private Numero(String e,String q, String p){ english = e; quechua = q; portugues = p; } public String getEnglish() { return english; } public String getQuechua() { return quechua; } public String getPortugues() { return portugues; } } public static void main(String[] args) { for (int i = 0; i < Numero.values().length; i++) { System.out.println(Numero.values()[i].getQuechua()+ ","+ Numero.values()[i].getEnglish()+ ","+ Numero.values()[i].getPortugues()); } System.out.println("\nhora en distintos idiomas :D! y con ForEach\n"); for (Numero numero: Numero.values()) { System.out.println(numero.getQuechua() +","+ numero.getEnglish() +","+ numero.getPortugues() ); }
Hice esta clase, como practica, aunque es muy baso en lo que esta en los ejemplos de la clase y de los aportes
<code> public class Enums { public enum Months{ JANUARY("Enero","Janvier"), FEBRUARY("Febrero", "Février"), MARCH("Marzo","Mars"), APRIL("Abril","Avril"), MAY("Mayo","Mai"); private String spanish; private String french; private Months(String s, String f){ spanish = s; french = f; } public String getSpanish() { return spanish; } public void setSpanish(String spanish) { this.spanish = spanish; } public String getFrench() { return french; } public void setFrench(String french) { this.french = french; } } public static void Months1(Months months){ switch (months){ case JANUARY: System.out.println(" January is the finish vacation"); break; case FEBRUARY: System.out.println("February is the star class"); break; case MARCH: System.out.println(" This month is the evil"); break; case APRIL: System.out.println(" Plese help me"); break; case MAY: System.out.println(" I am dead, studying is very bored"); break; } } } </code>
Y de esta forma lo llame en el main de esta forma
<code> public static void main(String[] args) { for (Enums.Months months: Enums.Months.values() ) { System.out.println(months.getFrench()+" "+months.getFrench()); } System.out.println(" What month are we in"); Scanner Sc = new Scanner(System.in); String month = Sc.nextLine(); Enums.Months1(Enums.Months.valueOf(month)); }