Как гарантировать еще один экземпляр внешнего класса, когда Enum как внутренний класс с EnumMap?

Я обучаюсь Enum с книгой Thinking in java, EnumMap упражнение смутило меня. Потому что Enum Экземпляр статический и последний, поэтому я не могу получить доступ к нестатическому члену во внешнем классе, вот часть моего кода:

public class VendingMachine1 {

    private static int amount = 0;
    private static State state = State.RESTING; 

    enum State {
        RESTING {
            void next(Input input) {
                amount += input.amount();
                state = TERMINAL;
            }
        },
        TERMINAL {
            void output() {
                System.out.println("Halted");
            }
        };

        void next(Input input) {
            throw new RuntimeException("Only call" + "next(Input input) for non-transient states");
        }

        void next() {
            throw new RuntimeException("Only call next() for StateDuration.TRANSIENT states");
        }

        void output() {
            System.out.println(amount);
        }
    }
   }

Таким образом, каждый раз, когда я могу получить только одну работу VendingMachine1, поэтому я хочу использовать EnumMap чтобы исправить эту ошибку, но я не знаю, как с этим справиться, вы можете мне помочь?

0 ответов

Другие вопросы по тегам