exception nullpointer
-
16-09-2019 - |
Question
Il y a une possibilité que cela peut être une question dupicate. J'initialiser une variable de chaîne à null.I peut ou ne peut pas le mettre à jour avec un value.Now Je veux vérifier si cette variable est pas égal à null et tout ce que j'essaie je reçois un pointeur nul exception.I ne peut pas se permettre de jeter nullpointer exception car il est costly.Is-il une solution de contournement qui est efficient.TIA
La solution
Si vous utilisez
if (x == null)
vous allez pas obtenir un NullPointerException
.
Je pense que vous faites:
if (x.y == null)
qui est de lancer parce que x
est nulle, non pas parce que x.y
est nulle.
Si cela ne l'explique pas, s'il vous plaît poster le code que vous utilisez pour tester la nullité.
Autres conseils
Je suppose que vous faites quelque chose comme ça,
String s = null;
if (s.equals(null))
Vous pouvez soit vérifier NULL comme ceci
if (s == null)
Une meilleure approche est d'ignorer le nul et il suffit de vérifier la valeur attendue comme celui-ci,
if ("Expected value".equals(s))
Dans ce cas, le résultat est toujours faux quand s est nulle.
chaîne est immuable
@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
String s = null;
s.equals(null);
}
@Test
public void testStringEqualsNull2() {
String s = null;
TestCase.assertTrue(s == null);
}
Je compare uniquement le null == de la
peut vous montrer l'extrait de code que vous avez écrit s == null ne sera jamais jeter un NPE
si vous vérifiez si « s » est nulle, alors ne sont pas applicables d'un point (.) Après « s ». Faire cela jetterait NullPointerException, comme l'application de point (.) Signifie que vous essayez d'accéder à un emplacement de pointeur qui est essentiellement nulle au moment!
Essayez également d'utiliser les fonctions de bibliothèque qui vérifient si une chaîne est nulle ou vide. vous pouvez utiliser StringUtils.isEmpty (s) de la bibliothèque apache qui a vérifié à la fois