冗余空检查

Lee*_*ijk 3 java eclipse

以下代码:

  public void test()
  {
    @Nullable T first = null;
    Graph<T> cycleG = new Graph<>();
    ArrayList<Graph<T>> segments = GraphFactory.makeSegments(this, cycleG);
    Graph<T> seg = segments.get(0);
    for (T v : cycleG.vertices)
    {
      if (seg.hasVertex(v))
      {
        if (first == null) // redundant null check here
        {
          first = v;
        }
      }
    }
    assert first != null;
  }
Run Code Online (Sandbox Code Playgroud)

在指示的行给我一个“冗余null检查”警告。“ T”是类型参数,类定义为

public class Graph<T extends Comparable<T>> implements IGraph
Run Code Online (Sandbox Code Playgroud)

这是错误吗?一个已知的?还是我忽略了某些东西。有什么避免的技巧吗?

注意:此代码没有意义,只是重现问题的一小部分。在循环后使用“ first”不会删除警告。

这是Java 8,Eclipse Luna 4.4.1。

Boa*_*ann 5

这看起来像是Eclipse错误467482的情况

有时,这样的代码分析警告确实有误报,尤其是在棘手的循环中,但是对代码的细微调整会导致这种错误警告消失。或者,用装饰该方法@SuppressWarnings("null")将关闭它。