-7

这是我的课:

private class Node {
    public int[] pivot;
    public int pivotIndex;
}

我在 Eclipse 中收到未使用 pivotIndex 的警告,但事实并非如此,稍后会在同一文件的代码中使用它。这是 Eclipse 中的错误吗?

4

2 回答 2

9

只是在其他地方提到了您的变量这一事实并不意味着它已被使用。展示:

public class Test {
  public void x() {
    Node n = new Node();
    n.pivot = null;
    n.pivotIndex = 0;
  }
  private class Node {
    public int[] pivot;
    public int pivotIndex;
  }
}

现在两者pivotpivotIndex都被标记为未使用,并且非常合理:程序永远不需要它们的值。

于 2013-01-18T14:36:57.487 回答
3

可以提及但不一定使用变量的另一个实例是在任何循环或方法中的 if 语句中。

public void method(){
  int[] pivot;
  int pivotIndex;

  ... 

  for(int i=0; i<pivot.length; i++){
     pivotIndex=i;
  }
}

在这个例子中,pivot 将被标记为已使用,因为这个循环的条件总是至少检查一次。但是,如果数组的长度 <= 0,则不会执行循环,因此不会看到 pivotIndex。

基本上,如果代码有可能不会进入提到变量的代码块,那么它将被标记为未读。Eclipse 的警告应该被视为任何拼写检查:如果您确定它是正确的并且它说您错了,那么在算法中,检查这种特殊情况被简单地忽略或实施毫无意义。

于 2013-01-18T15:33:38.087 回答