我有一个函数具有以下签名为什么在运行时检查@Nonnull注释?
public static String myFunction(@Nonnull String param)
当我把它用PARAM为空,我得到以下异常:
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应该不是在运行时进行检查。
谁实际抛出异常,为什么?
P.S.我在调试模式下运行Tomcat服务器从IntelliJ IDEA的2016.3与Oracle JDK 1.8.0_102
其实@Jesper,这些新的注解是这样做的:在编译时检查事情。你可以检查我的答案。“当你编译代码时,包括命令行中的NonNull模块,如果编译器检测到潜在问题,编译器会发出警告。” – BrunoDM
@BrunoDM - 它是运行时异常 – Dmitry