gpt4 book ai didi

java - 如何在不同的List类中使用相同的内部类?

转载 作者:行者123 更新时间:2023-12-01 08:50:23 25 4
gpt4 key购买 nike

我正在解决一个实现不同链接列表的问题。所有列表类都包含两个内部类;一个节点类和一个迭代器类。

这些内部类彼此完全相同。在 Iterator 类中,某些方法依赖于从外部类访问信息,这工作得很好。有没有办法在java中做到这一点,这样我就不需要在所有不同的列表类中包含完全相同的代码?我感到无能为力——我只是不知道该去哪里寻找。

这就是我的节点类的样子:

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

Node(T inn){
data = inn;
}

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

编辑:我意识到 Node 类完全依赖于自身。

这是我的简单迭代器:

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是包含它的类的固有部分。它只能与子类共享,而不能与完全位于父类层次结构之外的同级或类共享。

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

例如(大致):

abstract class Example {
protected int something;

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

abstract protected SomeType getParentData();
}

然后,Container 中的内部类将对其进行子类化并提供 getParentData

class Container {
private SomeType data;

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

关于java - 如何在不同的List类中使用相同的内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com