Я создал общую структуру данных и внедрил в нее пользовательский итератор , что итератор получает интерфейс, который имеет функцию, каждый объект в структуре данных отправляется к функции из интерфейса на объекте.Как передать параметры извне в реализацию inteface
Вот как я могу это сделать:
Интерфейс:
public interface QTreeAction<T> {
void actToDo(T Param);
}
Итератор:
public void Iterate(QNode qNode, QTreeAction<T> action)
{
if (qNode == null)
return;
for (int j = 0; j < qNode.objList.size(); j++)
{
action.actToDo(qNode.objList.get(j).Object);
}
for (int i = 0; i < 4; i++)
{
this.Iterate(qNode.Nodes.get(i), action);
}
}
И призыв:
public void Render(float fDelta, Canvas g) {
g.drawRGB(255, 255, 10);
g.setMatrix(this.gameMatrix);
ohHandler.render(new QTreeAction<Tile>() {
@Override
public void actToDo(Tile Param) {
Param.render(fDelta, g);
}
});
this.pPlayer.render(fDelta, g);
}
(ohHandler имеет узел и вызывает ite rator)
Рендер функция:
public void render(float fDelta, Canvas g) {
g.drawBitmap(StaticDataHolder.GameTextures.blocks[ttType.getValue()],
this.vecTilePosition.getX(), this.vecTilePosition.getY(), null);
}
Как вы видите Param.render требует 2 параметра, которые предоставляются функции, однако в этой ситуации есть ошибка, и она просит меня сделать Params, как окончательный, но он бросает и ошибки во время выполнения.
Как я могу это преодолеть?
ли вы имеете в виду, есть ошибка, если вы * действительно * сделать параметры 'final'? Какая ошибка? –