class Ideone {
static abstract class MyAbstractClass <T extends Enum<T>> {
public void myMethod(T cmd) {
System.
out.
println("parent called"); }
public void update(T cmd) {
myMethod(cmd);
}
}
enum CMD {
CMD_1, CMD_2
}
static class Child extends MyAbstractClass<CMD> {
public void myMethod(CMD cmd) {
System.
out.
println("child called"); if (cmd == CMD.CMD_1) {
//
}
}
}
public static void main
(String[] arg
) { Child child = new Child();
child.update(CMD.CMD_1);
}
}
Y2xhc3MgSWRlb25lIHsKICAgIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBNeUFic3RyYWN0Q2xhc3MgPFQgZXh0ZW5kcyBFbnVtPFQ+PiB7CiAgICAgICAgcHVibGljIHZvaWQgbXlNZXRob2QoVCBjbWQpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwYXJlbnQgY2FsbGVkIik7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZShUIGNtZCkgewogICAgICAgICAgICBteU1ldGhvZChjbWQpOwogICAgICAgIH0KICAgIH0KCiAgICBlbnVtIENNRCB7CiAgICAgICBDTURfMSwgQ01EXzIKICAgIH0KCiAgICBzdGF0aWMgY2xhc3MgQ2hpbGQgZXh0ZW5kcyBNeUFic3RyYWN0Q2xhc3M8Q01EPiB7CiAgICAgICAgcHVibGljIHZvaWQgbXlNZXRob2QoQ01EIGNtZCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNoaWxkIGNhbGxlZCIpOwogICAgICAgICAgICBpZiAoY21kID09IENNRC5DTURfMSkgewogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJnKSB7CgkJQ2hpbGQgY2hpbGQgPSBuZXcgQ2hpbGQoKTsKICAgICAgICBjaGlsZC51cGRhdGUoQ01ELkNNRF8xKTsKCX0KfQ==