Last active
December 26, 2015 21:49
-
-
Save jonasurbano/7219068 to your computer and use it in GitHub Desktop.
Ejemplo de uso de enum
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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