2009-12-16 12 views
8

Tengo un método setter.Verificación en un paso para el valor nulo y el vacío de una cadena

Luego, cuando se ejecuta otro método (por ejemplo generar), necesito verificar el valor de mis campos. Entonces, en el caso de la propiedad String, necesito saber si contiene el valor o si no se configuró. Entonces puede ser nulo, "" o algo significativo, hay 3 posibilidades. y es bastante aburrido para comprobar primero por un valor nulo:

if (s != null) 

luego por una cadena vacía

if (!s.isEmpty()) 

hay un cheque de un solo paso aquí? Puedes decirme que puedo inicializar mi campo String con un String vacío. [ ¿ES COMÚN? ] Pero, ¿y si alguien pasa un valor nulo al setter method setS? entonces, ¿siempre tenemos que verificar si el valor del Objeto es nulo o no antes de hacer algo con ese objeto?

Bueno, sí un método de selección puede comprobar que es valores y también un método getter puede devolver un valor no nulo si el campo es nulo. Pero, ¿es la única solución? ¡Es demasiado trabajo en getters & setters para que lo haga un programador!

+0

Sí Biblioteca Apache. ¿Por qué, una vez más, no está en la distribución standart java? – EugeneP

+2

algo en lo que pensar: null significa que no está configurado, "" significa configurado como vacío. – Pat

+0

De acuerdo con Pat aquí. A veces parece que esto no es más que contabilidad innecesaria, pero son semánticamente diferentes. Si el miembro es nulo, significa "no tiene valor", mientras que una cadena vacía "tiene un valor, una cadena vacía". Es común que los métodos tengan un comportamiento diferente (por diseño) basado en este hecho. – charstar

Respuesta

14

Biblioteca de Commons, StringUtils.isBlank() o StringUtils.isEmtpy().

estaVacia es equivalente a

s == null || s.length() == 0 

ISBLANK es equivalente a

s == null || s.trim().length() == 0 
+1

pequeña observación, lo que describió es isNotBlank & isNotEmpty :) – EugeneP

+0

Oh sí, buen punto, cambiando. – Joel

3

En los comunes Jakarta hay un StringUtils.isEmpty (String).

-3

probar este

si (s) {

}

+0

que funciona en Groovy ... –

+0

Eso no es Java-Style.Solo puedes usar expresiones booleanas como condiciones. – whiskeysierra

4
if(s != null && !"".equals(s)){ 
// this will work even if 's' is NULL 
} 
+1

Aunque esto impide una excepción nula, esta no es una prueba equivalente: la expresión se resuelve en verdadero si s es nula. Esta es una forma nula de probar si s contiene una cadena vacía, no prueba si s está vacío y ** no nulo **. ¡La diferencia es importante! –

+0

gracias, modificó la respuesta –

1

uso org.apache.commons.lang.StringUtils, el método StringUtils.isNotBlank verificación tanto nulidad y el vacío

Cuestiones relacionadas