【发布时间】:2015-01-09 19:41:43
【问题描述】:
我创建了一个通用数据结构并为其实现了一个自定义迭代器, 那个迭代器接收一个具有函数的接口,数据结构中的每个对象都是从对象上的接口发送给函数的。
这是我的做法:
界面:
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有节点,调用迭代器)
渲染函数:
public void render(float fDelta, Canvas g) {
g.drawBitmap(StaticDataHolder.GameTextures.blocks[ttType.getValue()],
this.vecTilePosition.getX(), this.vecTilePosition.getY(), null);
}
如您所见,Param.render 需要函数提供的 2 个参数,但是在这种情况下出现错误,它要求我将参数设置为最终参数,但它在运行时抛出错误。
我该如何克服这个问题?
【问题讨论】:
-
你是说做参数
final会出错吗?什么错误?
标签: java android generics parameters interface