以下代码:
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。
这看起来像是Eclipse错误467482的情况。
有时,这样的代码分析警告确实有误报,尤其是在棘手的循环中,但是对代码的细微调整会导致这种错误警告消失。或者,用装饰该方法@SuppressWarnings("null")将关闭它。
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |