e.getCategory() != null ? e.getCategory().getName() : "";
Cela jette un NullPointerException
et je ne comprends pas pourquoi. Quelqu'un peut-il expliquer?Pourquoi cela lance-t-il NullPointerException?
e.getCategory() != null ? e.getCategory().getName() : "";
Cela jette un NullPointerException
et je ne comprends pas pourquoi. Quelqu'un peut-il expliquer?Pourquoi cela lance-t-il NullPointerException?
Selon les règles de priorité de Java, votre code est en cours d'analyse comme ceci:
(("\"category\":" + "\"" + e.getCategory()) != null) ? e.getCategory().getName() : ""
avec la concaténation entière (("..." + e.getCategory())
!= null
) comme condition.
Depuis "..." + e.getCategory()
n'est jamais null
, le code n'a pas fonctionné.
e
est
null
.
ce n'est pas nul !! – GorillaApe
(e.getCategory()! = Null) renvoie false ou true et ne lève jamais d'exception – GorillaApe
** Ensuite, il y a un problème à l'intérieur de 'getName()'. ** – SLaks
Est-ce que e
est nul?
Peut-être que vous devriez essayer ceci:
(e != null) ?
(e.getCategory() != null) ?
e.getCategory().getName() :
""
: ""
Ou plutôt, une forme simplifiée:
(e != null && e.getCategory() != null) ?
e.getCategory().getName() :
""
Il existe une raison pour laquelle les instructions existent ... 'if (e! = null && e.getCategory()! = null && ...) ...' –
Mais les expressions trinaires sont funner ! :-) – amphetamachine
Solution trouvée ....
CORRECT
bufo.append("\"category\":" + "\"" + ((e.getCategory() != null) ? e.getCategory().getName() : "") + "\",");
PROBLÈME
bufo.append("\"category\":" + "\"" + e.getCategory()!=null?e.getCategory().getName():"" + "\",");
il semble qu'il a besoin() pour une raison quelconque – GorillaApe
Il a besoin() parce que sinon vous testez la chaîne "category": "null au lieu de tester la référence réelle, qui est nulle. Le compilateur suppose que vous testez le résultat –
Cela fait qu'il est parfois préférable de simplifier l'expression en utilisant une variable temporaire.Même si vous connaissez les règles de priorité d'opérateur à froid, le prochain slob pauvre en lisant votre code peut ne pas ... –
Veuillez publier une trace de pile complète de votre exception NullPointerException. Cela devrait aider à révéler exactement où le problème se produit. –
Juste un conseil: en Java, il est généralement considéré comme une bonne pratique de placer un espace de chaque côté de la plupart des opérateurs, comme '! =', '?' Et ':'. Cela rend le code beaucoup plus lisible. – Syntactic
merci pour l'astuce – GorillaApe