为什么javac在同一个班级中找不到符号?

时间:2012-12-15 02:16:24

标签: java generics

这个类是通用的,比方说Generic<T>并包含这个:

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

它有一个引发编译器错误的方法。它无法找到类Count()的符号count(或Generic<capture#940 of ? extends T>)并指向这些行:

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

为什么在other中找不到符号?我把它放在那里。 此外,有关如何标记此问题的任何提示。我无法弄清楚如何将其与包范围,类调用,子类,委托,命名空间等问题区分开来。并且没有人使用'无法找到符号'。

1 个答案:

答案 0 :(得分: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;
  }
}

请添加更多信息。如果我的程序没有在您的环境中编译,您应该发布有关编译的信息。如果我的程序使用编译器,您可以发布一个Short, Self Contained, Correct, Example来重现问题。