java用泛型枚举类型扩展抽象类
有没有办法用泛型枚举类型扩展抽象类?当我扩展它并实现下面的myMethod时,只调用抽象类中的方法
首先,我用方法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); } }
定义枚举并扩展类,但从未调用子类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 } } ... }
实例化并调用
Child child = new Child(); child.update(CMD.CMD_1);
# 1 楼答案
对。使用
T extends Enum<T>
:请参阅代码的live demo,经过此更改后,编译OK