小编Boy*_*rge的帖子

为什么javac错误"(x)不能应用于(y)",当参数和参数都匹配时会发生?(内部类调用外类方法)

通过家庭作业了解Java迭代器和一般数据结构.

我已经构建了一个双链表(LinkedList),它使用Nodes(LinkedList $ Node)并有一个Iterator(LinkedList $ LinkedListIterator)所有类都使用泛型.

在LinkedListIterator的@Overridden remove()方法中,我正在使用外部类的方法,即LinkedList类.

我得到以下编译时错误:

./LinkedList.java:170: deleteNode(LinkedList<T>.Node<T>,LinkedList<T>.Node<T>,LinkedList<T>.Node<T>) in LinkedList<T> cannot be applied to (LinkedList<T>.Node<T>,LinkedList<T>.Node<T>,LinkedList<T>.Node<T>)
        deleteNode(nodeToBeRemoved, next, prev);
Run Code Online (Sandbox Code Playgroud)

我的(原始)理解是类型不匹配,但我不明白这是怎么回事.

这是我完整的类代码:

import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.ConcurrentModificationException;


public class LinkedList<T> implements Iterable<T> { 
    private Node<T> sentinel;
    private long modCount;  //apparently no unsigned int's in Java.

    public LinkedList() {
        modCount = 0;
        sentinel = new Node<T>(null);
        sentinel.setNext(sentinel);
        sentinel.setPrev(sentinel);
    }

    public void append(T t) {
        /*
                    APPEND:
                      ...
                    [-----]
                    |     |
                    [-1st-]
                    |     |
        inFront->   [SENTL]
                    |     | <-- [newNode] …
Run Code Online (Sandbox Code Playgroud)

java iterator iterable compiler-errors inner-classes

6
推荐指数
1
解决办法
128
查看次数