我正在编写一个元胞自动机模拟程序,我目前有几个Cell对象的子类,对应于我想要运行的每种类型的模拟,每个子类都有一个setNeighbors方法,另一个类调用它来设置一个Cell的邻居取决于它在网格中的位置。
public abstract class LifeCell extends Cell{
protected List<LifeCell> myNeighbors
public void setNeighbors(List<LifeCell> neighbors){
myNeighbors=neighbors;
}
public abstract class FireCell extends Cell{
protected List<FireCell> myNeighbors
public void setNeighbors(List<FireCell> neighbors){
myNeighbors=neighbors;
}
等。 setNeighbors方法目前在子类之间重复,我想将邻居列表作为抽象Cell对象列表移动到Cell超类中。我的Cell超类中的代码目前看起来像这样:
public abstract class Cell {
List<Cell> myNeighbors;
public void setNeighbors(List<Cell> neighbors){
myNeighbors = neighbors;
}
}
然而,重要的是子类中的相邻Cell列表与每个特定子类具有相同类型的Cell(GameOfLifeCells应该只有GameOfLifeCells作为它们的邻居)。我似乎不可能在超类中声明一个邻居列表,然后用子类中的typeCell列表覆盖该实例变量。
我怎样才能表达每个Cell都有相同类型的邻居并且仍然可以从超类访问此List的关系?
答案 0 :(得分:0)
也许有点像这样:
abstract class TestSuper<T extends TestSuper>{
protected List<T> myList;
public void method( List<T> param ){
myList = param;
}
}
class TestChild extends TestSuper<TestChild>{}