Utilisez Objects.requireNonNull(Object)
pour cela.
Vérifie que la référence d'objet spécifiée n'est pas nulle. Cette méthode est conçue principalement pour faire la validation des paramètres dans les méthodes et les constructeurs, [...]
Dans votre cas, ce serait:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
Objects.requireNonNull(object);
// Do stuff using object, which would throw a NPE if object is null.
}
Cette fonction est faite aux fins que vous avez mentionnées, c'est-à-dire marquer explicitement ce qui ne doit pas être nul; également en production. Le grand avantage est que vous vous assurez de trouver des valeurs nulles là où elles ne devraient pas se produire en premier lieu. Vous aurez moins de problèmes de débogage causés par des valeurs nulles qui ont été passées quelque part où elles ne devraient pas être.
Un autre avantage est la flexibilité supplémentaire concernant les contrôles nuls contrairement à assert
. While assert
est un mot-clé pour vérifier une valeur booléenne, Objects.requireNonNull(Object)
est une fonction et peut donc être intégré dans du code beaucoup plus flexible et lisible. Par exemple:
Foo foo = Objects.requireNonNull(service.fetchFoo());
// You cannot write it in on line.
Bar bar = service.fetchBar();
assert bar != null;
service.foo(Objects.requireNonNull(service.getBar()));
// You cannot write it in on line.
Bar bar = service.getBar();
assert bar != null;
service.foo(bar);
Gardez à l'esprit que Objects.requireNonNull(Object)
c'est uniquement pour la vérification nulle où assert
est généralisé. assert
a des objectifs légèrement différents à cet égard, à savoir principalement les tests. Il doit être activé, vous pouvez donc l'activer pour les tests et le désactiver pour la production. Quoi qu'il en soit, ne l'utilisez pas pour le code de production. Cela pourrait ralentir l'application avec des validations inutiles et compliquées destinées aux tests. Utilisez-le pour séparer les chèques de test uniquement des chèques destinés également à la production.
Consultez la documentation officielle pour plus de détails assert
.
-ea
ou équivalent.