如何在不同的列表 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;
}
}
}
我正在解决实现不同链表的问题。所有列表 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;
}
}
}