What I try to do is this:
public class History {
public class State {
public enum StateType {
Eclipse gives me this compile error on StateType: The member enum StateType must be defined inside a static member type.
The error disappears when I make the State class static. I could make State static, but I don't understand why I cannot declare an enum in an inner class.
解决方案
enum types that are defined as nested types are always implicitly static (see JLS §8.9. Enums)
You can't have a static nested type inside a non-static one (a.k.a an "inner class", see JLS §8.1.3. Inner Classes and Enclosing Instances).
Therefore you can't have an enum inner type inside a non-static nested type.