web-dev-qa-db-fra.com

Utilisation des annotations @Nullable

J'ai vu une méthode dans Java déclarée comme:

void foo(@Nullable Object obj)
{ ... }

Quel est le sens de @Nullable ici? Est-ce que cela signifie que l'entrée pourrait être null?

Sans l'annotation, l'entrée peut toujours être nulle, alors je suppose que ce n'est pas juste ça?

320
user1508893

Cela indique clairement que la méthode accepte les valeurs NULL et que, si vous remplacez la méthode, vous devez également accepter les valeurs NULL.

Il sert également de conseil pour les analyseurs de code tels que FindBugs . Par exemple, si une telle méthode déréférence son argument sans vérifier d'abord la valeur null, FindBugs émettra un avertissement.

342
JB Nizet

Cette annotation est couramment utilisée pour éliminer NullPointerExceptions. @Nullable est souvent dit que ce paramètre pourrait être null. Un bon exemple d'un tel comportement peut être trouvé dans Google Guice . Dans ce cadre d'injection de dépendance légère, vous indiquez que cette dépendance peut être null. Si vous essayiez de passer null et sans annotation, le framework refuserait de faire son travail.

De plus, il est possible d'utiliser @Nullable avec l'annotation @NotNull. Ici vous pouvez trouver quelques astuces pour les utiliser correctement. L'inspection de code dans IntelliJ vérifie les annotations et aide à déboguer le code.

80
Adam Sznajder

Différents outils peuvent interpréter la signification de @Nullable différemment. Par exemple, Checker Framework et FindBugs gérer @Nullabledifféremment .

17
reprogrammer