Pregunta

Hay una posibilidad de que esto puede ser una pregunta dupicate. Me inicializar una variable de cadena a null.I puede o no puede actualizarlo con un value.Now Quiero comprobar si esta variable no es igual a null y lo que intento me sale un puntero nulo exception.I no puede permitirse el lujo de tirar NullPointer excepción, ya que es costly.Is hay solución alternativa que es efficient.TIA

¿Fue útil?

Solución

Si utiliza

if (x == null)

se quiere no obtener una NullPointerException.

Sospecho que estás haciendo:

if (x.y == null)

que está lanzando porque x es nulo, no porque x.y es nulo.

Si eso no explica, por favor enviar el código que está utilizando para probar la nulidad.

Otros consejos

Creo que se está haciendo algo como esto,

  String s = null;

  if (s.equals(null))

o bien comprobar NULL como esto

  if (s == null)

Un mejor enfoque es hacer caso omiso de la nula y sólo comprueban el valor esperado como este,

  if ("Expected value".equals(s))

En este caso, el resultado siempre es falsa cuando s es nulo.

La cadena es inmutable

@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
    String s = null;
    s.equals(null);
}

@Test
public void testStringEqualsNull2() {
    String s = null;
    TestCase.assertTrue(s == null);
}
  
    

Estoy comparando s nula == única

  

¿Puede mostrar el fragmento de código que ha escrito s == null nunca va a lanzar una NPE

Si usted está comprobando si la "s" es nulo, no se aplican un punto (.) Después de "s". Hacer eso sería tirar NullPointerException, como la aplicación de punto (.) Significa que usted está tratando de acceder en una posición del puntero, que es básicamente nula en el momento!

Además, trate de utilizar funciones de biblioteca que comprueban si una cadena es nulo o vacío. puede usar StringUtils.isEmpty (s) de la biblioteca de Apache, que comprueba tanto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top