当前位置: 首页 > 面试题库 >

为什么我不能在Java的内部类中创建枚举?

袁宜
2023-03-14
问题内容

我想做的是这样的:

public class History {
    public class State {
        public enum StateType {

Eclipse中给了我这个编译错误的StateTypeThe member enum StateType must be defined inside a static member type

当我将State类设为静态时,该错误消失。我可以使Statestatic,但我不明白为什么我不能enum在内部类中声明一个。


问题答案:

enum定义为嵌套类型的类型始终是隐式的static(请参见JLS§8.9。Enums)

您不能在非静态类型(也就是“内部类”,请参见JLS§8.1.3。内部类和封闭实例)中拥有静态嵌套类型。

因此,您不能enum在非静态嵌套类型中包含内部类型。



 类似资料:
  • 问题内容: 如果我有以下课程: 我显然可以实例化该对象,并且我知道必须进行某种子类化,因为我可以覆盖Hooray方法,但是如果有子类化,为什么我不能在匿名类内创建一个新方法? 返回语法错误 问题答案: 您可以创建方法,方法没有任何问题(除了它的前面有一个大写字母之外)。问题在于,在匿名类之外,Boo方法不可用(它没有作为类API的一部分公开)。 这与实现接口的任何类都是相同的…如果该类具有不属于接

  • 我在Java中使用嵌套类时遇到问题,有人知道为什么Java不允许我这样做吗?

  • 问题内容: 这是我正在运行的命令: 另外,我正在使用自制Python运行Mac 这是我的setup.py脚本:https : //gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd 我要疯了-我不知道为什么这不起作用。 问题答案: 首先安装软件包: 文档并不太清楚,但是 “ wheel项目为setuptools提供了bdist_wheel命令”

  • 为什么我不能这样做/是否有解决方法来实现这一点: 这两个编译错误是 > On

  • 问题内容: 我想知道为什么在Java语言中a 不能扩展。 我不是在谈论一个延伸的(这不能做,因为Java没有多重继承,而Š隐含延长),但一类的以只添加额外的方法,而不是额外的枚举值。 就像是: 要这样使用: 因此,有人可以对此限制提供理由(或将我指向正确的JLS部分)吗? 问题答案: 我认为 他们这样做 的答案来自以下问题: 在您的示例中,如何实例化MyClass?用户永远不会(通过)显式实例化枚

  • 我正在做我的节目。我正在使用Sublime文本和用于编译基本Windows CMD。我有一个文件夹,在这个文件夹中我有一个包,里面有每个文件(folde todolist)。在这个包中,我有一个类(Gui.java(packgae(folder)Gui\u pckg))。此类中的代码如下所示: 导入javax。摆动导入java。awt。; 公共类Gui{ } 而且它编译得很好。 但是,当我试图编译