2010-10-25 17 views

Répondre

5

No.

Si parentObj est nul alors toute tentative d'appeler une méthode ou un champ de référence se traduira par une NullPointerExcepton. ! = évalue toujours les deux côtés.

Vérifiez simplement si parentObj est null en premier et gérez-le de manière appropriée.

5

Pourquoi ne pas simplement if(parentObj != null && parentObj.childObj != null)?

+0

C'est ce que demande l'OP. Il cherche à éviter la verbosité du chèque. –

+0

@Tony Ennis. 1) Ce n'est pas comme ça que j'ai lu la question. 2) De toute façon, la réponse est qu'il ne peut pas, et la réponse de @ irrelephant lui fournit l'alternative la plus saine. –

1

Si parentObj est nul, le fait de référencer n'importe quelle méthode/champ sur parentObj résultera en un NPE. En d'autres termes, vous avez besoin de if (parentObj != null && parentObj.childObj != null) pour éviter un NPE. Groovy réduit ce type de verbosité (très commun) avec le safe navigation operator, ce qui vous permet d'écrire if (parentObj?.childObj).

+0

À un moment donné, l'opérateur de navigation sûr ou quelque chose de similaire aurait pu le faire dans Java 7 via le projet Coin. Mais il n'a pas fait la coupe; voir http://blogs.sun.com/darcy/entry/project_coin_final_five –