Eclipse null分析:int类型的表达式需要未经检查的转换以符合'@Nonnull Integer'

Mar*_*ein 6 java eclipse null static-analysis non-nullable

配置Eclipse 4.2.0以执行空分析(配置为使用@javax.annotation.Nonnull等)时,以下代码将生成警告

空类型安全:int类型的表达式需要未经检查的转换以符合'@Nonnull Integer'

class C
{
  static void foo(int i)
  {
    bar(i); // Warning
  }

  static void bar(@javax.annotation.Nonnull Integer i)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题(不使用@SuppressWarnings("null"))?似乎分析器不知道盒装基元不可能null.

Eri*_*agt 3

我认为这是 Eclipse 中的一个错误。我在 IntelliJ 上尝试了同样的方法,它按预期工作。

当我传递 Null 时,IntelliJ 正确地告诉我不允许使用 null。

在此输入图像描述

然而,当我使用普通的 i 变量时,没有弹出错误,这是非常正确的。 在此输入图像描述

我什至尝试过这个,只是为了实验,所以我不确定您是否坚持使用 Eclipse,否则我建议使用 IntelliJ 的免费社区版本终极版本

在此输入图像描述