有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java用泛型枚举类型扩展抽象类

有没有办法用泛型枚举类型扩展抽象类?当我扩展它并实现下面的myMethod时,只调用抽象类中的方法

  1. 首先,我用方法myMethod定义抽象类,在这里我想根据枚举值做出决定

    public abstract class MyAbstractClass <T extends enum<T>> {
    
        public void myMethod(T cmd) {
          //i want to override this
        }
    
        public void update(T cmd) {
          myMethod(cmd);
        }
    }
    
  2. 定义枚举并扩展类,但从未调用子类myMethod(只调用抽象类的myMethod)

    enum CMD {
       CMD_1, CMD_2
    }
    
    public class Child extends MyAbstractClass<CMD> {
    ...
      public void myMethod(CMD cmd) {
        if (cmd == CMD_1) { //do something }
      }
    ...
    }
    
  3. 实例化并调用

    Child child = new Child();
    child.update(CMD.CMD_1);
    

共 (1) 个答案

  1. # 1 楼答案

    对。使用T extends Enum<T>

    public abstract class MyAbstractClass <T extends Enum<T>> {
        public void myMethod(T cmd) {}
    }
    

    请参阅代码的live demo,经过此更改后,编译OK