Как гарантировать еще один экземпляр внешнего класса, когда 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
чтобы исправить эту ошибку, но я не знаю, как с этим справиться, вы можете мне помочь?