Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre StringUtils en commons-lang3 y commons-lang

La diferencia entre StringUtils en commons-lang3 y commons-lang

(1) Los tipos de parámetros de entrada son diferentes

El parámetro de entrada de commons.lang es Sring str

El parámetro de entrada de commons.lang3 es CharSequence cs (ámbito de aplicación más amplio)

(2) El número de parámetros de entrada es diferente

commons.lang3 admite múltiples entradas

Recientemente, a menudo necesitamos hacer algunas juicios sobre cadenas y procesamiento. .lang3 admite múltiples entradas

Recientemente, a menudo necesitamos realizar algunos juicios y procesamientos en String, por lo que utilizamos la clase de herramienta StringUtils proporcionada por Apache y descubrimos que hay dos versiones diferentes, una de las cuales se encuentra en org. En apache.commons.lang, hay otra versión en org.apache.commons.lang. Una versión se encuentra en org.apache.commons.lang y la otra en org.apache.commons.lang3.

Después de la consulta, lang3 es un conjunto de herramientas lanzado por el equipo de Apache Commons. Requiere jdk 1.5 o superior y es totalmente compatible con las funciones de java5. En comparación con lang, descarta algunas API antiguas. Esta versión es incompatible con versiones anteriores y se le cambió el nombre a lang3 para evitar conflictos. Echemos un vistazo a lo que ha cambiado en algunos métodos comunes en StringUtils.

Puedes ver que la lógica de estos métodos no ha cambiado, pero el tipo de parámetro ha cambiado, de String a CharSequence. Entonces, ¿qué es este CharSequence? Echemos un vistazo a su código fuente:

CharSequence es una interfaz de secuencia de caracteres que define algunos métodos comunes, como length(), subSequence(), etc. String también implementa esta interfaz. Por supuesto, puede usar subString () en String y, de hecho, String también implementa el método subSequence (), simplemente apuntando directamente a subString ().

El mayor beneficio de usar CharSequence en lang3 es que amplía la disponibilidad de estos métodos, no solo String, otras clases que implementan esta interfaz también pueden usar estos métodos en StringUtils para realizar ciertas tareas. Además, descubrí que muchas clases de nio implementan esta interfaz, por lo que supuse que esta interfaz también podría usarse para propósitos de nio.

En lang, el primer paso es determinar si str1 está vacío, mientras que en lang3, el primer paso es determinar si los dos objetos son iguales. Esto no es difícil de entender. Si dos objetos tienen la misma dirección, apuntan al mismo objeto y el contenido debe ser el mismo.

En lang3, también hay una manera de determinar múltiples parámetros al mismo tiempo. Esto se puede lograr colocando la lista de parámetros en una matriz CharSequence y luego iterándola para llamar al método anterior (como por ejemplo). está vacío). Existen métodos similares para determinar los espacios en blanco.

Algunas personas pueden pensar que String en sí tiene muchos métodos, ¿por qué deberíamos utilizar los métodos proporcionados por StringUtils? Dejando de lado los tipos de parámetros, podemos ver que la mayoría de los métodos en StringUtils harán una verificación nula y si es nulo, devolverán Null o una cadena vacía, y cuando muchos de los parámetros entrantes o el objeto en sí son nulos, la cadena El propio método informará un error de puntero nulo.

Referencia: StringUtils en commons-lang3 y commons-lang.