Apache Commons Lang
Introducción
Commons Lang es un proyecto de Jakarta que extiende la funcionalidad del
paquete estándar java.lang.
Nos proporciona un gran número de clases que nos hacen ahorrar tiempo en el
desarrollo de nuestros proyectos.
En este tutorial voy a comentar las clases y métodos que a mi personalmente
me han parecido más interesantes. Para obtener una referencia más completa y
detallada sobre el paquete puede dirigirse a la web del
proyecto
Un ejemplo del uso de Commons Lang
Voy a escribir un ejemplo autocomentado con estos métodos que a mi
personalmente me parecieron más útiles en el día a día del proceso de desarrollo
de software.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
package com.autentia.tutoriales.commonsLang; import java.util.ArrayList; import java.util.GregorianCalendar; import org.apache.commons.lang.*; import org.apache.commons.lang.mutable.MutableInt; import org.apache.commons.lang.time.*; /** * Ejemplo del uso de la librería Commons Lang * @author Carlos García. Autentia. */ public class JakartaCommonsLangExample { public static void main(String[] args) { String[] nombres = new String[0]; int[] edades = new int[] {29, 28}; <span class="hl1">// 1) Detecta si el array está vacio. Imprimiría true</span> System.out.println(ArrayUtils.isEmpty(nombres)); <span class="hl1">// 2) Añade dos elementos a un array.</span> nombres = (String[]) ArrayUtils.add(nombres, "Carlos"); nombres = (String[]) ArrayUtils.add(nombres, "Gema"); System.out.println(nombres[0]); // Imprimirá: Carlos <span class="hl1">// 3) Detecta si el array está vacio. Imprimiría false</span> System.out.println(ArrayUtils.isEmpty(nombres)); <span class="hl1">// 4) Convertimos de array de tipos primitivos a array de Objetos, en este caso devolvería un Integer[] (Esta sobrecargado para todos los tipos primitivos)</span> Integer[] values = ArrayUtils.toObject(edades); System.out.println(values[0]); // Imprimirá: 29 <span class="hl1">// 5) Creamos una copia del array</span> String[] nombres2 = (String[]) ArrayUtils.clone(nombres); <span class="hl1">// 6) Crea un array a partir de los elementos de dos arrays.</span> String[] p2 = (String[]) ArrayUtils.addAll(nombres, nombres2); System.out.println(p2[0] + " " + p2[1] + " " + p2[2] + " " + p2[3]); // Carlos, Gema, Carlos, Gema <span class="hl1">// 7) Vemos si un array tiene un elemento. Imprimiría: false</span> System.out.println( ArrayUtils.contains( p2, "Jaime") ); <span class="hl1">// 8) Buscamos la primera aparición de un elemento. Imprimiría: 1</span> System.out.println( ArrayUtils.indexOf( p2, "Gema") ); <span class="hl1">// 8) Buscamos la última aparición de un elemento. Imprimiría: 3</span> System.out.println( ArrayUtils.lastIndexOf( p2, "Gema") ); <span class="hl1">// 9: Abreviamos una cadena. Imprimiría: En un l...</span> System.out.println(StringUtils.abbreviate("En un lugar de la mancha", 10)); <span class="hl1">// 10: Elimina los saltos de linea (\r o \n o \r\n) que haya al final de una cadena.</span> System.out.println(StringUtils.chomp("Linea1\n")); <span class="hl1">// 11: Imprimiría "A "</span> System.out.println(StringUtils.rightPad("A", 5)); <span class="hl1">// 12: Crea un String con todos los elementos de un Array: Carlos*Gema*Carlos*Gema</span> System.out.println(StringUtils.join(p2, '*')); <span class="hl1">// 13: Métodos para codificación de caracteres. Imprimiría true</span> System.out.println(CharEncoding.isSupported("utf8")); GregorianCalendar c1 = new GregorianCalendar(13, 12, 1976); GregorianCalendar c2 = new GregorianCalendar(14, 12, 1976); <span class="hl1">// 14: Mira si dos Calendar son iguales sin comparar la hora. Imprimirá: false</span> System.out.println(DateUtils.isSameDay(c1, c2)); <span class="hl1">// 15: Convertimos milisegundos a Horas, minutos, segundos: Imprimiría: 1 0 1</span> System.out.println(DurationFormatUtils.formatDuration(3601000, "H m s")); <span class="hl1">// 16: Wrappers que pueden ser modificados para los tipos primitivos.</span> MutableInt n1 = new MutableInt(55); n1.setValue(4); System.out.println(n1); // Imprimiría: 4 <span class="hl1">// 17: Creamos un Integer a partir de representación en base 16.</span> Integer n2 = org.apache.commons.lang.math.NumberUtils.createInteger("0xA"); System.out.println(n2.intValue()); <span class="hl1">// 18: Validación de un parámetro. Si es menor se generará una java.lang.IllegalArgumentException //con el mensaje: "El parámetro debe ser positivo: <elValorDeLaVariable>"</span> int i = 10; Validate.isTrue(i < 0, "El parámetro debe ser positivo: ", i); <span class="hl1">// 19: Validación de un parámetro. Si es null se generará una java.lang.IllegalArgumentException</span> String name = null; Validate.notNull(name, "No ha especificado el parámetro nombre"); <span class="hl1">// 20: Validamos que todos los elementos de una colección sean de tipo String</span> ArrayList names = new ArrayList(); names.add("1"); names.add(new Integer(22)); Validate.allElementsOfType(names, String.class, "Datos incorrectos"); <span class="hl1">// 21: Validamos que la colección (o un array) no sea null ni tenga elementos que sean null. // Generará un IllegalArgumentException en caso de que los tenga</span> Validate.noNullElements(names, "La colección no puede tener elementos null"); <span class="hl1">// 22: Capitaliza una cadena. Imprimiría: Autentia Real Business Solutions.</span> System.out.println(WordUtils.capitalize("autentia real business solutions")); <span class="hl1">// 23: Escapa una cadena para poder ser usada en cadenas XML: // Imprimiría <datos>edad > 10 && tipo=niño</datos></span> String xml = StringEscapeUtils.escapeXml("edad > 10 && tipo=niño"); System.out.println("<datos>" + xml + "</datos>"); <span class="hl1">// 24: Desescapa una cadena desde formato xml. Imprimiría: edad > 10 && tipo=niño</span> System.out.println(StringEscapeUtils.unescapeXml(xml)); } } |
Conclusiones
Como veis este tutorial no tiene una elevada complejidad ni explica
tecnologías complejas, pero creo que este API es interesante y puede ahorrar
tiempo en el desarrollo de cualquier proyecto.
No obstante, en Autentia,
empresa en la cual trabajo nos preocupamos por estar informado sobre los nuevos
APIs y tecnologías disponibles en el mercado y somos partidarios de la
compartición del conocimiento asi que aquí teneis un poquito más de nuestra
aportación a nuestros lectores.
Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.
cgpcosmad@gmail.com