É possível estender enum no Java 8?

Apenas tocando e surgiu uma maneira interessante de adicionar funcionalidade aoenumpecadoMétodo Java Enum toString () comesta.

Alguns ajustes adicionais me permitirampor pouco adicione também uma pesquisa inversa organizada (por exemplo, não lançando uma exceção), mas há um problema. Está relatando:

error: valueOf(String) in X cannot implement valueOf(String) in HasValue
public enum X implements PoliteEnum, ReverseLookup {
overriding method is static

Há algum caminho?

O objetivo aqui é adicionar silenciosamente (por meio de uma implementação de interface com umdefault método como eu adicioneipoliteName na resposta vinculada) alookup método que faz ovalueOf função sem gerar uma exceção. É possível? Agora é claramente possível estenderenum - um dos meus principais problemas com Java até agora.

Aqui está minha tentativa fracassada:

public interface HasName {

    public String name();
}

public interface PoliteEnum extends HasName {

    default String politeName() {
        return name().replace("_", " ");
    }
}

public interface Lookup<P, Q> {

    public Q lookup(P p);
}

public interface HasValue {
    HasValue valueOf(String name);
}

public interface ReverseLookup extends HasValue, Lookup<String, HasValue> {

    @Override
    default HasValue lookup(String from) {
        try {
            return valueOf(from);
        } catch (IllegalArgumentException e) {
            return null;
        }
    }

}

public enum X implements PoliteEnum/* NOT ALLOWED :( , ReverseLookup*/ {

    A_For_Ism, B_For_Mutton, C_Forth_Highlanders;
}

public void test() {
    // Test the politeName
    for (X x : X.values()) {
        System.out.println(x.politeName());
    }
    // ToDo: Test lookup
}

questionAnswers(4)

yourAnswerToTheQuestion