public enum ID { Player(), Enemy(); } 我已经阅读了Java枚举的完整Oracle文档,我知道它的工作原理和基础知识,但是我对上述枚举类的主体一无所知。 Are Player()和Enemy()常量还是函数? 此外,这将返回ID.Player()。
与常规类一样,如果您没有声明显式构造函数,则枚举类型会自动获得默认的无参构造函数。语言规范says:在没有构造函数声明的枚举声明中,将隐式声明默认构造函数。 默认构造函数是私有的,没有形式参数,并且没有抛出子句。稍早之前,它也说:枚举常量可以后跟参数,这些参数传递给枚举的构造函数...如果省略了参数,则假定为空参数列表。因此,这些只是枚举常量,显式调用了隐式构造函数。 这与省略()完全相同。
ID.Player();
?" 的错误。 - Federico klez Cullocaenum
声明令人困惑,原因有两个。首先,该声明不遵循Java命名约定,因为枚举常量应该使用UPPER_SNAKE_CASE编写(而ID
类应该是Id
)。其次,如果一个枚举有一个默认构造函数,在大多数情况下括号会被省略。 - MC Emperor