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?
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.
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.
Différents outils peuvent interpréter la signification de @Nullable
différemment. Par exemple, Checker Framework et FindBugs gérer @Nullable
différemment .