为什么在运行时检查@Nonnull注释?

时间:2016-11-28 15:06:47

标签: java intellij-idea non-nullable

我有一个带有以下签名的功能

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服务器

1 个答案:

答案 0 :(得分:80)

在IntelliJ IDEA中编译项目时,它会检测已编译类的字节码,以便为各种@Nonnull注释添加运行时检查。此行为由选项控制:

设置|构建,执行,部署|编译器| [x]为非空注释的方法和参数添加运行时断言。