我在编译中遇到错误:
'不兼容的类型 - 找到单位但预期单位'
这是为什么? 这是从一个方法返回时,我甚至可以将返回的数据解析为'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
}
}
此类包含在集合中。
'不兼容的类型 - 找到单位但预期单位'
答案 0 :(得分:2)
无论unitHash的定义如何,都不能保证包含unit类型的元素,因为unitHash不是基于类型参数化的,而是unitHashIterator。我怀疑你要么写class unitHashIterator
而不是class unitHashIterator<unit>
,要么private unitHash<unit> hash;
而不是private unitHash<unit> hash;
。
您获得的错误消息可能是因为编译器期望返回与类型变量unit
相同类型的内容,但hash
返回某些具体类型(不是类型变量)恰好也会命名为unit
。