我试图了解为什么会出现此错误:
-- 这是错误 --
File: ...\HashTable.java [line: 103]
Error: The return type is incompatible with HashTableInterface<Key,Value>.iterators()
该接口包含一个内部类:
public class Entry<Key, Value>{...}
LinkedList 与 java API 类似,但它包含一个迭代器内部类,但在测试一些更简单的东西时,例如:
-- 这是工作代码,至少在 drjava 的交互窗格中 --
LinkedList<String> list = new LinkedList<String>();
Iterator<String> test = list.iterator();
但是我无法在我的 HashTable 类中编译此方法:
-- 这是我无法工作的代码 --
public Iterator<Entry<Key, Value>> iterator(){
LinkedList<Entry<Key, Value>> iter = new LinkedList<Entry<Key, Value>>();
return iter.iterator();
}
我认为它很简单,看起来并不太复杂,但任何输入将不胜感激。
** 你很抱歉它应该是 list.iterator();
编辑
-- 好了,界面来了 --
import nhUtilities.containers2.*;
interface HashTableInterface<Key, Value> {
public boolean isEmpty();
public Value get(Key key);
public void add(Key key, Value value);
public void remove(Key key);
public void clear();
public Iterator<Entry<Key, Value>> iterator();
public interface Entry<Key, Value> {
public Key getKey();
public Value getValue();
public void setValue(Value value);
}
}
-- 这是实现的条目,它是被破坏的方法所在的 HashTable 的内部类--
public class Entry<Key, Value> {
private Key k;
private Value v;
public Entry(Key key, Value value) {
k = key;
v = value;
}
/**
* Returns a key of pair;
*/
public Key getKey() {
return this.k;
}
/**
* Returns value of pair;
*/
public Value getValue() {
return this.v;
}
}
编辑+
所以我才意识到
public class LinkedList<Element> extends AbstractList<Element>
和
public abstract class AbstractList<Element> implements List<Element>
和
public interface List<Element> extends java.lang.Iterable<Element>
然而在 LinkedList 里面有
private class Iterator extends AbstractIterator<Element>
implements nhUtilities.containers2.Iterator<Element>
也许这可能导致冲突(因为我使用的 LinkedList 不是 java API LinkedList)?