annotation - java enforce not null parameter
¿Por qué @Nonnull anotación verificada en tiempo de ejecución? (1)
Tengo una función con la siguiente firma
public static String myFunction(@Nonnull String param)
Cuando lo llamo con param como nulo, obtengo la siguiente excepción:
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 se supone que no se debe comprobar en tiempo de ejecución.
¿Quién realmente lanza la excepción y por qué?
PD: ejecuto el servidor Tomcat en modo de depuración desde IntelliJ IDEA 2016.3 con Oracle JDK 1.8.0_102
Cuando compila su proyecto en IntelliJ IDEA, instrumenta el
@Nonnull
de
@Nonnull
de las clases compiladas para agregar comprobaciones de tiempo de ejecución para varios tipos de anotaciones
@Nonnull
.
Este comportamiento está controlado por la opción:
Configuraciones | Construcción, Ejecución, Implementación | Compilador | [x] Agregue aserciones de tiempo de ejecución para métodos y parámetros no anulados.