-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;
  }
}

pivotこれで、との両方pivotIndexが未使用としてマークされ、非常に正当化されます。プログラムはそれらの値を必要としません。

于 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;
  }
}

この例では、このループの状態が常に少なくとも1回チェックされるため、ピボットは使用済みとしてマークされます。ただし、配列の長さが0未満の場合、ループは実行されないため、pivotIndexは表示されません。

基本的に、変数が言及されているコードブロックにコードが入らない可能性がある場合は、未読としてマークされます。Eclipseの警告は、他のスペルチェックと同じように考慮する必要があります。それが正しいと確信していて、間違っていると表示されている場合、アルゴリズムでは、この特定のケースのチェックは単に見落とされているか、実装する意味がありません。

于 2013-01-18T15:33:38.087 に答える