Como chamar métodos individuais do Enum?

Eu tenho um enum que pode se parecer com o abaixo. Meu objetivo é ter umenum com alguns métodos comuns (apliquei isso adicionando um método abstrato) e alguns métodos "enum value individual".

O seguinte código compila:

public enum MyEnum {

    VALUE {
        @Override
        public void syso() {
            System.out.println("VALUE syso");
        }
    },

    SPECIAL_VALUE {
        @Override
        public void syso() {
            System.out.println("SPECIAL_VALUE syso");
        }

        public void sayHello() {
            System.out.println("Hello");
        }
    };

    public abstract void syso();

    public static void main(String... args) {
        MyEnum.VALUE.syso();
        MyEnum.SPECIAL_VALUE.syso();
    }

}

A execução disso resulta na impressão do seguinte:

VALUE syso
SPECIAL_VALUE syso

No entanto, tentando ligarsayHello(), que eu defini emSPECIAL_VALUE, não funciona.

A adição do seguinte ao método principal não compila mais:

public static void main(String... args) {
    MyEnum.SPECIAL_VALUE.sayHello(); // does not work
}

Por que é que? Parece perfeitamente bom para mim, mas o método não pode ser encontrado. Existe alguma maneira de invocar esse método? Talvez através da reflexão?

Gostaria de evitar tornar esse método abstrato também, porque não faz sentido para outros valores de enumeração. Eu também não possoextend essa enumeração e adicione esse método especial, herdando os comuns. Eu também gostaria de evitar adicionar algum tipo de classe singleton para "simular" isso.

É de alguma forma possível executar isso? Caso contrário, qual seria minha melhor alternativa?

questionAnswers(2)

yourAnswerToTheQuestion