我有一个一般的 Java 问题。
我有不同的“法术”类,它们不是由 1 个对象组成的,因为它们相差太多。 所以我创建了例如 3 个类:
- 调用了
Ice ice = new Ice();
- 调用了
Hurricane hurricane = new Hurricane();
- 调用了
Bomb bomb = new Bomb();
这些法术确实有相同的对应方法(getCooldown()
、getName()
、cast()
)。
所以我希望将这些类实例保存在某个list
/hashmap
中,我可以在其中进行迭代。在遍历实例时,我将检查 getName()
是否等于某个名称,如果是,则返回某个类实例。
我希望这是可能的,如果不能,我希望有人能帮我想出另一个主意。
最佳答案
您可以让所有三个类实现一个公共(public)接口(interface)并声明列表以包含该接口(interface)的实例。
interface Spell {
int getCooldown();
String getName();
void cast();
}
public class Ice implements Spell {
@Override
public int getCooldown() { . . . }
@Override
public String getName() { . . . }
@Override
public void cast() { . . . }
// more stuff specific to Ice
}
public class Hurricane implements Spell {
// similar to above
}
然后你可以这样做:
List<Spell> spells = new ArrayList<>();
spells.add(new Hurricane());
spells.add(new Ice());
您也可以使用通用基类来执行此操作,但对接口(interface)进行编码通常会提供更大的灵 active 。
关于java - 将不同的类实例保存在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20526718/