为什么要在运行时检查@Nonnull 注释?
Why @Nonnull annotation checked at runtime?
我有一个具有以下签名的函数
public static String myFunction(@Nonnull String param)
当我用参数为 null 调用它时,出现以下异常:
Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'param' of com/MyClass.myFunction must not be null
at com.MyClass.$$$reportNull$$[=11=](MyClass.java)
javax.annotation.Nonnull 应该不会在 运行 时间检查。
究竟是谁抛出了异常,为什么?
P.S。我 运行 Tomcat 服务器处于调试模式,来自 IntelliJ IDEA 2016.3 和 Oracle JDK 1.8.0_102
当您在 IntelliJ IDEA 中编译您的项目时,它会检测已编译 类 的字节码,以添加对各种风格的 @Nonnull
注释的运行时检查。此行为由选项控制:
设置 |构建、执行、部署 |编译器 | [x] 为非空注释的方法和参数添加运行时断言。
我有一个具有以下签名的函数
public static String myFunction(@Nonnull String param)
当我用参数为 null 调用它时,出现以下异常:
Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'param' of com/MyClass.myFunction must not be null
at com.MyClass.$$$reportNull$$[=11=](MyClass.java)
javax.annotation.Nonnull 应该不会在 运行 时间检查。
究竟是谁抛出了异常,为什么?
P.S。我 运行 Tomcat 服务器处于调试模式,来自 IntelliJ IDEA 2016.3 和 Oracle JDK 1.8.0_102
当您在 IntelliJ IDEA 中编译您的项目时,它会检测已编译 类 的字节码,以添加对各种风格的 @Nonnull
注释的运行时检查。此行为由选项控制:
设置 |构建、执行、部署 |编译器 | [x] 为非空注释的方法和参数添加运行时断言。