1

クラスはジェネリックです。たとえば Generic<T>、これが含まれています。

private int count;
public int Count()
{
  return count;
}

コンパイラエラーを発生させるメソッドがあります。クラスのシンボルCount()(または) が見つからず、次の行を指しています。countGeneric<capture#940 of ? extends T>

public void set(Generic<? extends T> other)
{
  int something = other.Count();
  int somethingElse = other.count;
  //actions
}

に記号が見つからないのはなぜotherですか? 私はそこに置いた。また、この質問にタグを付ける方法に関するヒント。パッケージスコープ、クラス呼び出し、サブクラス化、委譲、名前空間などの問題と区別する方法がわかりません。そして、誰も「cannot-find-symbol」を使用していません。

4

1 に答える 1

1

これは、回答ではなく拡張コメントです。

次のプログラムは、Eclipse でエラーなしでコンパイルされます。

public class Generic<T> {
  private int count;
  public int Count()
  {
    return count;
  }
  public void set(Generic<? extends T> other)
  {
    int something = other.Count();
    int somethingElse = other.count;
  }
}

さらに情報を追加してください。私のプログラムがあなたの環境でコンパイルされない場合は、コンパイルに関する情報を投稿してください。私のプログラムがコンパイラを実行する場合、問題を再現する短い自己完結型の正しい例を投稿できます。

于 2012-12-15T03:46:15.753 に答える