(java)不兼容的类型?

时间:2010-10-16 04:29:08

标签: java

我在编译中遇到错误:

  

'不兼容的类型 - 找到单位但预期单位'

这是为什么? 这是从一个方法返回时,我甚至可以将返回的数据解析为'unit'并且它工作正常,为什么会出现这个错误? 我在一个集合中使用迭代器的事实是否与它有关?我没有留下迭代器类型E,因为我特意想要这个集合用于一种类型的对象。

private class unitHashIterator<unit> implements Iterator<unit> {
  private unitHash hash;
  private int nextIndex;
  private unitHashIterator(unitHash u) {
    hash = u; nextIndex = 0;
  }
  public unit next() {
    if(!hasNext())
      throw new NoSuchElementException();
    return hash.data[nextIndex++]; << HERE OCCURS THE ERROR
  }
}

此类包含在集合中。

  

'不兼容的类型 - 找到单位但预期单位'

1 个答案:

答案 0 :(得分:2)

无论unitHash的定义如何,都不能保证包含unit类型的元素,因为unitHash不是基于类型参数化的,而是unitHashIterator。我怀疑你要么写class unitHashIterator而不是class unitHashIterator<unit>,要么private unitHash<unit> hash;而不是private unitHash<unit> hash;

您获得的错误消息可能是因为编译器期望返回与类型变量unit相同类型的内容,但hash返回某些具体类型(不是类型变量)恰好也会命名为unit