Можно ли расширить enum в Java 8?

Просто играть и придумал приятный способ добавить функциональностьenumвJava Enum toString () метод сэтот.

Некоторые дальнейшие изменения позволили мнеоколо также добавьте аккуратный (то есть не исключая) обратный поиск, но есть проблема. Это сообщает:

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

Есть ли способ?

Целью здесь является тихое добавление (через реализацию интерфейса сdefault метод, как я добавилpoliteName в связанном ответе)lookup метод, который делаетvalueOf Функция без исключения. Является ли это возможным? Теперь ясно, что можно расширитьenum - одна из моих главных проблем с Java до сих пор.

Вот моя неудачная попытка:

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
}

Ответы на вопрос(4)

Ваш ответ на вопрос