Как вызвать Enum отдельными методами?

У меня есть перечисление, которое может выглядеть так, как показано ниже. Моя цель - иметьenum с некоторыми распространенными методами (я применил это путем добавления абстрактного метода) и некоторыми методами «enum value Individual».

Следующий код компилируется:

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();
    }

}

Запуск этого приводит к печати следующего:

VALUE syso
SPECIAL_VALUE syso

Однако пытается позвонитьsayHello(), который я определил вSPECIAL_VALUE, не работает.

Добавление следующего к основному методу больше не компилируется:

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

Это почему? Мне кажется, это совершенно нормально, но метод не может быть найден. Есть ли способ вызвать этот метод? Может быть, с помощью отражения?

Я также хотел бы не делать этот метод абстрактным, потому что он не имеет смысла для любых других значений перечисления. Я тоже не могуextend перечислите и добавьте этот специальный метод, наследуя при этом общие. Я также хотел бы избежать добавления какого-либо синглтон-класса для «симуляции» этого.

Можно ли как-нибудь запустить это? Если нет, то что будет моей лучшей альтернативой?

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

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