无法从内部类访问包含类的方法

伊山·索尼(Ishan Soni)

我正在创建一个实现Iterable的自定义链接列表。我试图从迭代器的remove方法中调用包含类的方法remove方法,但我无能为力。它说:“该类型的方法remove()不适用于参数(整数)”

这是我的代码:

package collections.customCollections.linkedList;

import java.util.Iterator;

public class LinkedList<T> implements Iterable<T>{

private Link<T> head;
private Link<T> tail;
private int size;

public int getSize() {
    return size;
}

public LinkedList(){
    head = null;
    tail = null;
    size=0;
}

public void addAtEnd(T data){   
    Link<T> newNode = new Link<T>(data); 
    //Insert as first element
    if(head == null){
        head = newNode;
        tail = newNode;
    }
    else{
        newNode.previous = tail;
        tail.next = newNode;
        tail = newNode; 
    }
    size++;
}

public void addAtStart(T data){
    Link<T> newNode = new Link<T>(data);
    if(head == null){
        head = newNode;
        tail = newNode;
    }
    else{
        newNode.next = head;
        head.previous = newNode;
        head=newNode;

    }
    size++;
}

//prints the entire linked list
public void print(){
    Link<T> traversalNode = head;
    if(head == null){
        System.out.println("Empty Linked List");
    }
    else{
        while(traversalNode != null){
            System.out.print(traversalNode.data +"->");
            traversalNode=traversalNode.next;
        }
    }
}

public T remove(int index){
    int i=1;
    Link<T> traversalNode = head;
    while(i<index){
        traversalNode=traversalNode.next;
        i++;
    }

    if(traversalNode.next==null){
        removefromEnd();
    }
    else if(traversalNode.previous==null){
        removeFromStart();
    }
    else{
        traversalNode.previous.next=traversalNode.next;
        traversalNode.next.previous=traversalNode.previous;
        traversalNode.next=null;
        traversalNode.previous=null;

    }
    return traversalNode.data;
}

public T removefromEnd(){
    Link<T> nodeToRemove = tail;
    tail = nodeToRemove.previous;
    tail.next = null;
    size--;

    return nodeToRemove.data;
}

public T removeFromStart(){
    Link<T> nodeToRemove = head;
    head = nodeToRemove.next;
    head.previous = null;
    size--;

    return nodeToRemove.data;
}

public T get(int index)
{   Link<T> returnedNode = head;
int i = 1;
while(i < index){
    returnedNode=returnedNode.next;
    i++;
}
return returnedNode.data;
}

private class Link<T>{
    private T data;
    private Link<T> next = null;
    private Link<T> previous = null;

    public Link(T data){
        this.data = data;
    }
}

@Override
public Iterator<T> iterator() {
    return new Iterator<T>(){
        private int position;

        @Override
        public boolean hasNext() {
            if(position<getSize()){
                return true;
            }
            return false;
        }

        @Override
        public T next() {
            T data=get(position);
            position++;
            return data;
        }

        @Override
        public void remove() {
            remove(position);
        }

    };
}
}

编辑:我得到我可以使用LinkedList.this.remove()调用该方法。我更想知道为什么我可以直接调用removefromEnd()而不能直接调用此方法?

灵魂大师

访问外部实例的方法的正确语法是:

@Override
public void remove() {
    LinkedList.this.remove(position);
}

但是,编译器为明确的方法提供了一种方便的方法。这意味着,必须使用上述语法,因为在匿名类中声明了具有相同名称(删除)的方法。另一方面-例如-您可以直接getnext方法中调用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内部类的继承和对封闭类方法/字段的访问

来自分类Dev

内部类的继承和对封闭类方法/字段的访问

来自分类Dev

派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

来自分类Dev

派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

来自分类Dev

访问内部嵌套类中的外部类

来自分类Dev

内部类成员可从封闭类访问

来自分类Dev

C ++模板类的内部类访问

来自分类Dev

访问内部嵌套类中的外部类

来自分类Dev

内部类成员可从封闭类访问

来自分类Dev

在静态内部类内部访问外部类的方法

来自分类Dev

成员类(内部类)如何访问外部类的实例变量?

来自分类Dev

无法访问内部类中的LinkedHashMap

来自分类Dev

无法访问C ++中的内部类

来自分类Dev

内部类方法对父方法变量的访问

来自分类Dev

无法从匿名类访问外部类

来自分类Dev

无法从片段类android访问外部类

来自分类Dev

无法从片段类android访问外部类

来自分类Dev

解释在Java中访问内部类的方法?

来自分类Dev

C ++:如何访问内部类的方法?

来自分类Dev

异步模块内部类的访问方法或

来自分类Dev

如何访问python内部类中的方法?

来自分类Dev

内部类可以访问基类中的私有final方法,但是为什么呢?

来自分类Dev

嵌套内部类:访问父方法并公开嵌套类类型的变量

来自分类Dev

我可以从外部类的类方法调用内部类吗?

来自分类Dev

从类内部访问包含的静态信息的更好/正确的方法

来自分类Dev

如何从Java中的封闭类访问内部类?

来自分类Dev

如何从派生类访问内部类构造函数?

来自分类Dev

如何访问内部类?

来自分类Dev

访问内部类变量

Related 相关文章

热门标签

归档