Java - 可以在抽象方法的参数中枚举

标签 java enums abstract-class subclass

我对枚举不熟悉,想问是否可以将枚举放在抽象方法中并在其他类中重写它? 这是我正在使用的一个示例:

我有许多扩展抽象类的子类,它们每个都有自己的子命令作为枚举类型。枚举类型有一个 int ID 和 String 名称。

此外,还有一个方法接受子命令并根据所选子命令更改输入 UI。

public class CommandOne extends CommandClass{
    ........

    public void updateUIBySubCmd(SubCommand subCmd){
          /*Do Something*/
    }

    private enum SubCommand{
        SubCmd1    (ID1, Name1),
        SubCmd2    (ID2, Name2),
        ........
    }
}

我有一个由上述子类扩展的抽象类,它不包含任何枚举,只包含几个由子类重写的函数。

问题是,我可以执行以下操作并使 updateUIBySubCmd 方法变得具有枚举类型的抽象吗?如果允许,我该如何实现?

public abstract class CommandClass{
..........
    public abstract void updateUIBySubCmd(Enum x);
}

最佳答案

听起来您正在寻找这样的东西:

public abstract class CommandClass<E extends Enum<E>> {
..........
    public abstract void updateUIBySubCmd(E x);
}

public class CommandOne extends CommandClass<SubCommand> {
    ........

    @Override
    public void updateUIBySubCmd(SubCommand subCmd){
          /*Do Something*/
    }
}

public enum SubCommand {
    SubCmd1    (ID1, Name1),
    SubCmd2    (ID2, Name2),
    ........
}

关于Java - 可以在抽象方法的参数中枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730565/

相关文章:

java - 对象传递给java中的方法

c - 使用 ENUM 作为位图,如何在 C 中验证

php - 应该使用哪种技术来测试 PHPUnit 中的抽象类功能?

java - 何时使用 : Java 8+ interface default method, 与抽象方法

java - 在 Guice 中使用最终字段进行字段注入(inject)

java-8 - 为什么 Java 8 的 ToIntFunction<T> 不扩展 Function<T, Integer>

java - 如何在请求正文中通过 RestTemplate POST xml 数据?

java - 将无效字符串传递给 Java 枚举 .valueOf 调用会产生什么结果?

java - 从 JSON 反序列化 java 枚举

php - 简单手工制作的 PHP 模板引擎无法工作!请帮助