【问题标题】:Why I am not able to declare my enum as a public?为什么我不能将我的枚举声明为公众?
【发布时间】:2014-12-10 04:58:39
【问题描述】:

我正在声明一个枚举在类之外,如下所示:

public enum CoffeeSize{SMALL, BIG, HUGE}

class Coffee{
    CoffeeSize size;
}

public class CoffeTest {
    public static void main(String[] args) {
        Coffee myCoffee = new Coffee();
        myCoffee.size = CoffeeSize.BIG;
    }
}

但我在标记枚举“public”时遇到以下错误:

公共类型 CoffeeSize 必须在其自己的文件中定义。

我记得在某处读过,我们可以在类之外使用私有和受保护以外的访问修饰符声明枚举。

谁能告诉我为什么会这样?我的代码有什么问题? 将我的枚举 “放在自己的文件中” 意味着什么?

【问题讨论】:

  • 要么按照编译器告诉你的去做,把CoffeeSize放到它自己的类文件(CoffeeSize.java)中或者移到Coffer类声明中...
  • “我记得在某处读过书”——如果你发现这个“某处”是你所指的,我愿意打赌,它实际上并没有说出你认为的内容。
  • 它与任何其他类或接口相同。如果你有一个顶级的public class ABC 并且它不在ABC.java 中,javac 不会喜欢它。枚举也是如此。

标签: java enums


【解决方案1】:

实际上主要原因是您的文件名和公共类名不同,因此您会收到此错误。 java 类必须只包含一个顶级类型,例如类、枚举接口抽象等。如果你真的想在这个类中使用这个枚举,请删除公共访问修饰符,否则将其移动到新文件 CoffeeSize.java.. 希望这会有所帮助。

【讨论】:

    【解决方案2】:

    因为在同一个java文件中不能有两个公共类或枚举:

    在您的代码中:
    1.public class CoffeTest {
    2.public enum CoffeeSize{

    所以你需要在其他文件中移出一个:

    【讨论】:

      【解决方案3】:

      要将枚举移动到自己的文件中,请创建一个名为 CoffeeSize.java 的新文件并将枚举代码放在那里。

      【讨论】:

      • 嗯...叫它CoffeeSize.java,而不是CoffeeSize.class。让 Java 编译器生成 .class 文件。这方面做得很好。
      • 哎呀,你是对的。我想我需要睡觉了。 - 固定
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多