这对我来说很难用文字表达出来,所以请允许我解释一下。
我有一个抽象类Entity
和子类House
和Warehouse
. 每个子类都具有相同的静态变量,但具有不同的值。
当在我的游戏中按下按钮时,将Action
创建一个指定创建并放置在世界中的实体子类。我想编写一个通用方法,Entity
使用它所在的子类的静态变量将一些东西放到世界上。
我有一个类PlaceEntityAction
,当单击鼠标时,假设条件正确,将放置适当的实体。如何将我想要放置的类传递给这个 Action 以便它适用于任何泛型Entity
?
这是一些愚蠢的代码:
if (mousePressed)) {
if (some conditions are true) {
int ex = x pos
int ey = y pos
if (world.player.haveFunds(e.COST_ENERGY, e.COST_MONEY,
e.COST_RESOURCE)) {
if (world.places[ex][ey] == 0) {
world.entities.add(e);
world.player.addEnergy(-e.COST_ENERGY);
}
}
}
}
所以基本上我怎样才能e
让它成为我传递给 Action 的任何子类,因为 COST_MONEY 等是静态的,应该由类而不是对象访问?
我真的很难表达我想要什么。也许有人可以破译这个或提供一些关于我的问题的其他见解。如果您愿意,我可以提供任何其他必要的信息。
编辑:
e
是我之前基于 ID 系统初始化的任何子类的实例,但我不喜欢这种方法。