java - 将不同的类实例保存在列表中

标签 java class interface instances

我有一个一般的 Java 问题。

我有不同的“法术”类,它们不是由 1 个对象组成的,因为它们相差太多。 所以我创建了例如 3 个类:

  1. 调用了Ice ice = new Ice();
  2. 调用了 Hurricane hurricane = new Hurricane();
  3. 调用了 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/

相关文章:

java - Spring Boot 授权服务器向外部服务发送请求以获取用户详细信息

java - Spring Java + 将模板文件设置为样式表

java - 类和私有(private)成员

python-3.x - Intellij IDEA 导入类时出现问题, "cannot find reference"但代码仍然有效 - Python

Java 8 - 接口(interface)不再是抽象的了吗?

java - 从一个大字符串中一次读取一个字符

ios - 核心数据替代方案

c# - CaSTLe windsor - 汽车不满足实现类型的通用约束

java - 网络接口(interface) - VB.Net/Java

java - 监控文件更改