Skip to content

Instantly share code, notes, and snippets.

@jonasurbano
Last active December 26, 2015 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonasurbano/7219068 to your computer and use it in GitHub Desktop.
Save jonasurbano/7219068 to your computer and use it in GitHub Desktop.
Ejemplo de uso de enum
package pruebaEnum;
import java.util.Locale;
public class LosEnumMolan {
public enum Divisa {
EUR, USD, BTC;
public String toLowerCase() {
return toString().toLowerCase(Locale.US);
}
public static Divisa set(String divisa) {
Divisa d = null;
try {
d = Divisa.valueOf(divisa);
return d;
} catch (Exception e) {}
if (Divisa.EUR.toString().equalsIgnoreCase(divisa))
return Divisa.EUR;
if (divisa.equals("EURO")) return Divisa.EUR;
if (divisa.equals("€")) return Divisa.EUR;
if (Divisa.USD.toString().equalsIgnoreCase(divisa))
return Divisa.USD;
if (divisa.equals("$")) return Divisa.USD;
if (Divisa.BTC.toString().equalsIgnoreCase(divisa))
return Divisa.BTC;
return null;
}
};
public static void main(String argv[]) {
/*
* Los enum molan porque el mismo código te propone las
* opciones que puedes usar. Incluso sirve para hacerte
* una idea de las funcionalidades que te ofrece una
* librería.
*/
System.out.print("Las posibles divisas son: ");
Divisa[] valores = Divisa.values();
for (Divisa divisa : valores) {
System.out.print(divisa + " ");
}
System.out.println(".");
/*
* No tienes que usar const String como entradas
* a métodos que admitirían cualquier otra cosa.
* Si implementas esos métodos debes comprobar la
* entrada. Con enum, no es necesario.
*/
metodoCutre("hola");
/*
* Para serializar los enum en String tenemos
* toString() que puede ser útil para guardar
* en una base de datos.
*/
System.out.println("Los enums son muy manejables: "
+ Divisa.EUR.toString());
/*
* Para deserializar un String a enum contamos
* con el método valueOf() pero cuaidado: Lanza
* InvalidArgumentException si el valor no se
* puede deserializar.
*/
String dato = "EUR";
Divisa divisa = Divisa.valueOf(dato);
System.out.println("Mi dato obtenido de la BDD es " + divisa);
/*
* Permitiendo que se pueda obtener un enum Divisa
* a partir de un String, se puede implementar
* un método para deserializar valores "parecidos".
* Si se sabe que es común escribir EURO en vez de
* EUR como divisa, facilitemos la vida al usuario:
*/
System.out.println("eur también vale: " + Divisa.set("eur"));
System.out.println("EURO también vale: " + Divisa.set("EURO"));
System.out.println("$ también vale: " + Divisa.set("$"));
}
public static void metodoCutre(String constante) {
/*
* Comprobar que constente contiene alguno
* de los valores esperados
*/
try {
Divisa.valueOf(constante);
} catch (Exception e) {
System.out.println(constante + " no es una divisa.");
}
}
public static void metodoGuay(Divisa divisa) {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment