J'ai une fonction avec la signature suivante
public static String myFunction(@Nonnull String param)
Lorsque je l'appelle avec param comme nul, 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.Nonnull est supposé ne pas être vérifié au moment de l'exécution.
Qui lève l'exception et pourquoi?
P.S. J'exécute le serveur Tomcat en mode débogage à partir d'IntelliJ IDEA 2016.3 avec Oracle JDK 1.8.0_102
Lorsque vous compilez votre projet dans IntelliJ IDEA, il instrumente le bytecode des classes compilées afin d’ajouter des contrôles d’exécution pour les différentes versions de @Nonnull
annotations. Ce comportement est contrôlé par l'option:
Paramètres | Construction, exécution, déploiement | Compilateur | [x] Ajoutez des assertions d'exécution pour les méthodes et les paramètres non-annotés.