59 votes

Pourquoi @Non annotation vérifié au moment de l'exécution?

J'ai une fonction à la suite de la signature

public static String myFunction(@Nonnull String param)

Quand je l'appelle avec les param nulle, j'obtiens l'exception suivante:

Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'param' of com/MyClass.myFunction must not be null
    at com.MyClass.$$$reportNull$$$0(MyClass.java) 

javax.annotation.Non null censé ne pas être vérifiée au moment de l'exécution.

Qui, en fait, lève l'exception et pourquoi?

P. S.-je exécuter serveur Tomcat en mode de débogage à partir de IntelliJ IDEA 2016.3 avec Oracle JDK 1.8.0_102

87voto

yole Points 3628

Lorsque vous compilez votre projet dans IntelliJ IDEA, il instruments le bytecode des classes compilées afin d'ajouter d'exécution des contrôles pour les différentes versions de l' @Nonnull des annotations. Ce comportement est contrôlé par l'option:

Paramètres | Construire, l'Exécution, le Déploiement | Compilateur | [x] Ajout d'exécution des assertions de non-null-annotée des méthodes et des paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X