我有一个带有以下签名的功能
public static String myFunction(@Nonnull String param)
当我用param将其称为null时,我得到以下异常:
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。我使用Oracle JDK 1.8.0_102
从IntelliJ IDEA 2016.3以调试模式运行Tomcat服务器答案 0 :(得分:80)
在IntelliJ IDEA中编译项目时,它会检测已编译类的字节码,以便为各种@Nonnull
注释添加运行时检查。此行为由选项控制:
设置|构建,执行,部署|编译器| [x]为非空注释的方法和参数添加运行时断言。