我已经创建了自己的LinkedList,并且遇到了我的一个方法的类型问题。 我一直收到错误:
Error: /Users/randymartinuzzi/Documents/EECS 233/FBLinkedList.java:100: incompatible types
found : java.lang.Object
required: FBLinkedList.Node
我的程序运行时的任何时间:
Node n = iterator().next();
或n = iterator().next();
我不确定为什么这是因为我的方法next()
返回一个Node。
我已在下面附上我的完整代码。任何有关该问题的建议都将受到高度赞赏。
import java.util.*;
public class FBLinkedList implements Iterable, FBList {
private Node front;
private Person tempPerson;
private Node tempNode;
public FBLinkedList() {
front = null;
}
///////////////
public int size() {
int count = 0;
Node nodeptr = getFront();
while (nodeptr != null) {
count++;
nodeptr = nodeptr.getNext();
}
return count;
}
//////////////
public Person lookup(int i){
if(i<0 || this.size() >0) {
throw new ArrayIndexOutOfBoundsException();
}
else if(i<this.size()) {
Node n = iterator().next();
for(int index = 0; index < i; index++) {
n = iterator().next();
}
return n.getElement();
}
}
protected Node getFront() {
return front;
}
protected void setFront(Node front) {
this.front = front;
}
public Iterator iterator() {
return new ListIterator(getFront());
}
public static class Node {
private Person element;
private Node next;
public Node(Person element, Node next) {
this.element = element;
this.next = next;
}
public Person getElement() {
return element;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
private static class ListIterator implements Iterator {
private Node nodeptr;
public ListIterator(Node first) {
nodeptr = first;
}
@Override
public boolean hasNext() {
return (nodeptr != null);
}
@Override
public Node next() {
try {
Node element = nodeptr;
nodeptr = nodeptr.getNext();
return element;
}
catch (NullPointerException e) {
throw new NoSuchElementException();
}
}
}
}
答案 0 :(得分:0)
为LinkedList实现类型安全的Iterable<E>
接口。
public class FBLinkedList implements Iterable<Node>...{...}
它会将Iterator iterator()
泛型方法更改为特定的Iterator<Node> iterator()
方法。