Cosas copadas de esta biblioteca (al menos para que les pique el bicho de la curiosidad):
http://commons.apache.org/lang/download_lang.cgi
1 ) Equals que funciona con null.
2 ) Singleton de un Null (Tenes un Null Object!).
3 ) Valida si una colección contiene un valor "Null"
4 ) Valida si todos los elementos de una colección son de un tipo en especial.
5 ) Trae un manejo de arrays[] mas objetoso (ArrayUtils.add(vector[],elemento), por ejemplo)
6 ) Escapa cadenas dependiendo el formato.
7 ) Distancia de Levenstein entre cadenas
8 ) Clonado profundo!!! (Clona el objeto, y todos sus atributos, recursivamente...)
9 ) Miles de cosas de reflection!
Algunos pocos ejemplos que tenemos:
A ) Manejo de Nulls.
ObjectUtils trae bastantes herramientas copadas, que si bien no es nada que puede no ocurrirsenos hacer, Commons-Lang ya nos las trae hechas y probadas:
1 ) Equals que funciona con null.
2 ) Singleton de un Null (Tenes un Null Object!).
¿Como es el punto 1? ¿No estás cansado de, cuando queres hacer un Equals, tener que primero fijarte que el objeto no sea Null, y despues tener preguntar si el elemento es igual a otro?
Osea, no estas cansado de tener que hacer esto?:
if ( miAuto != null && miAuto.equals(elAutoQueChoco) )
//... codigo ...
Yo realmente si estoy cansado. Si no tengo auto, es logico que mi auto va a ser distinto al que choco...
Apache Commons - Lang te trae la solución:
if ( ObjectUtils.equals(miAuto, elAutoQueTieneMultas) );
// ... codigo ...
que es algo mucho más declarativo que lo otro!
2 ) ¿Y para qué me sirve tener un objeto Null? ¿No te jode el manejo que tiene Null con un hashmap?
Osea, supongamos que tenemos lo siguiente:
miHashMap.put("Cero", "Julian");
miHashMap.put("Dos", "Pepe");
miHashMap.put("Cuatro", null);
if(miHashMap.get("Cuatro") == miHashMap.get("Noventa dos veinte"))
// La condicion de arriba siempre va a ser "true", ya que el HashMap te retorna Null, si el valor del diccionario es null, o si la clave no existe.
En cambio, con esto podemos hacer:
miHashMap.put("Cero", "Julian");
miHashMap.put("Dos", "Pepe");
miHashMap.put("Cuatro", ObjectUtils.NULL);
if(miHashMap.get("Cuatro") == miHashMap.get("Noventa dos veinte"))
// La condicion de arriba siempre va a ser "true", ya que el HashMap te retorna Null, si el valor del diccionario es null, o si la clave no existe.
B ) Otros:
6 ) Escapa cadenas:
Dependiendo de las necesidades, escapa las cadenas para que funcionen en donde lo necesitemos. Hay para Java, Xml, Csv, Html, y hasta uno para Sql (aunque no funciona correctamente con sentencias Like) Ejemplo:
Imaginemos que el usuario, en un textbox escribió: Y el marciano dijo, "Hola mundo & planetas cercanos!!!"
StringEscapeUtils.escapeJava(a); // Y el marciano dijo, \"Hola mundo & planetas cercanos\"
StringEscapeUtils.escapeCsv(a); // "Y el marciano dijo, ""Hola mundo & planetas cercanos!!!"""
StringEscapeUtils.escapeHtml(a); // Y el marciano dijo, "Hola Mundo & planetas cercanos!!! ""
Tiene tanto para Escapar, como para Des-Escapar :P
7 ) Distancia de Levenstein:
La distancia de levenstein es la cantidad de caracteres en los que difieren dos palabras. Ejemplo:
"pablo" "palo" -> 1 ("pablo" tiene una letra mas).
"aaab" "bbbb" -> 3 (Hay tres letras que son diferentes, y una en comun).
StringUtils.LevensteinDistance("pablo","palo")
sábado, 25 de diciembre de 2010
Suscribirse a:
Comentarios (Atom)