Pourquoi l’annotation @Nonnull est-elle vérifiée à l’exécution?

J’ai une fonction avec signature suivante

public static Ssortingng myFunction(@Nonnull Ssortingng param) 

Quand je l’appelle avec param comme null, 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 censé ne pas être vérifié à l’exécution.

Qui lance réellement l’exception et pourquoi?

PS Je lance le serveur Tomcat en mode débogage à partir d’IntelliJ IDEA 2016.3 avec Oracle JDK 1.8.0_102

    Lorsque vous comstackz votre projet dans IntelliJ IDEA, il code le bytecode des classes compilées pour append des vérifications à l’exécution pour différentes @Nonnull annotations @Nonnull . Ce comportement est contrôlé par l’option:

    Paramètres | Construire, exécuter, déployer | Compilateur | [x] Ajouter des assertions d’exécution pour les méthodes et les parameters non annotés.