-3

我在这个包中定义了这个节点:

package provided;
public interface Node{
    public Node getNext();
} 

这里我想使用Node,嵌套类“LinkedListIterator”中的问题,它无法看到我的Node方法:

import provided.Node;
class LinkedList {
    private Node head;
    head.getNext(); // there is no error here, the method getNext() is available 
    class LinkedListIterator <Node> implements Iterator<Node> {
        private Node next_node;
            public Node next(){
                return next_node.getNext(); // The method getNext() is 
                                            // undefined for the type Node 
            }
    }
}
4

2 回答 2

4

实际上,这里的问题不是 Class Node 没有 getNext() 方法,而是因为涉及到泛型,您已经将 Iterator 声明为class LinkedListIterator <Node> implements Iterator<Node> {now ,当您声明 Node 类型的变量时,编译器会将其带到是由名称“节点”定义的通用类型,为了解决这个问题,将下一个节点的声明更改为,private provided.Node next_node;或者,为通用定义另一个名称,例如......类型,t等。

`

class LinkedListIterator <Node> implements Iterator<Node> {
    private provided.Node next_node;

        @Override
        public Node next() {
            return next_node.getNext();
        }

`

于 2012-04-29T11:13:46.937 回答
0

你的界面里有这个

 public Integer getNext();

但是你的匿名类已经定义了这个

Public Node next() {
   return next_node.getNext() 

与返回类型不匹配。你需要把你的界面改成这样

 public Node getNext();
于 2012-04-29T11:05:20.313 回答