如何在不同的列表 class 中使用相同的内部 class?

How to use same inner class in different List classes?

我正在解决实现不同链表的问题。所有列表 classes 都包含两个内部 classes;一个 Node-class 和一个 Iterator-class。

这些内部 class 彼此完全相同。在 Iterator-class 中,一些方法依赖于从外部 class 访问信息,这工作正常。有没有办法在 java 中执行此操作,这样我就不需要在所有不同的列表 -class 中包含完全相同的代码?我感到无能为力——我只是不知道去哪里找。

这是我的节点-class 的样子:

class Node{
    Node next;
    Node previous;
    private T data;

    Node(T inn){
        data = inn;
    }

    public Node getNesteNode(){
        return next;
    }
    public T getData(){
        return data; 
    }
}

编辑:我意识到节点 class 完全依赖于它自己。

这是我的简单迭代器:

class LenkeListeIterator implements Iterator<T>{
    private int field = 0;   
    Node denne = forste;

    @Override
    public boolean hasNext() {

        return field!= storrelse();
    }

    @Override
    public T next() {

        T data = denne.getData();
        denne = denne.getNesteNode();
        field++;
        return data;
    }
}

根据定义,inner class 是包含它的 class 的固有部分。它只能与子classes 共享,不能与完全父class 层次结构之外的同行或classes 共享。

您的 Node class 中没有任何内容要求它是内部 class,因此您可以将其独立。但是,如果 需要成为内部 class 的东西,您可以将所有 没有 的部分放入一个独立的 class 然后在每个父 class 中被子classed 以提供对父的内部数据的访问。

例如(大致):

abstract class Example {
    protected int something;

    public void logic() {
        SomeType data = this.getParentData();
        /* ...do something with `data`... */
    }

    abstract protected SomeType getParentData();
}

然后一个内部 class 在,比方说,Container 将子 class 它并提供 getParentData.

class Container {
    private SomeType data;

    class ContainerExample extends Example {
        protected SomeType getParentData() {
            return data;
        }
    }
}