Java中的枚举编译错误

4

我正在尝试从基础开始学习Java,并且有一本很棒的书要读http://www.amazon.com/o/ASIN/0071591060/ca0cc-20。现在我在书中找到了一个关于在类内部但在任何方法之外声明Enums的示例,所以我尝试了一下:

Enum CoffeeSize { BIG, HUGE, OVERWHELMING }; 

在这本书中,它的拼写是枚举,我收到了这个编译消息:语法错误,插入";"以完成块语句 枚举真的很重要吗?我的意思是说,我应该跳过它还是有可能有一天会用到它们?

你安装了哪个版本的Java?在命令行中输入“java -version”来查找。 - Bill the Lizard
@Bill the Lizard java 版本号为 "1.6.0_18",我甚至在使用 Maven 构建项目时特别指定要使用 1.6 版本。 - London
3个回答

2

在类内部声明enum的正确方式如下:

public class Main {
  enum Foo { One, Two, Three }

  public static void main(String args[]) {
    System.out.println(Foo.One);
  }
}

您应该使用 enum 关键字,而不是 Enum,因为后者是所有 enum 实例的超类。

当我复制/粘贴你的代码时,从Eclipse中得到了编译错误枚举无法解析为类型 - London
2
@London 好的,我知道这是什么。你的项目正在编译为 Java 1.4 的目标。你需要将它更改为 Java 5 或 Java 6。Java 枚举在 1.4 中不存在。这与你使用的 JDK 不同。该项目将有一个关于使用语言版本的设置。 - cletus
你说得对,为什么这个项目在我明确配置了Maven编译插件使用1.6时还能编译通过呢。谢谢,这就是正确的答案。 - London

1

从Java 5开始,enum是一个关键字,因此大小写很重要。

至于你是否需要了解它们,这真的取决于你。它们甚至在几个版本中都不是语言的一部分,但确实很好用。引用同一本书的话:

......您可以保证编译器会阻止您将任何东西分配给CoffeSize,除了BIGHUGEOVERWHELMING

有些人不喜欢这个,但我个人喜欢让编译器尽可能多地完成所有工作。

(另外,Java教程也是学习基础知识的另一个好来源。)


1
我认为我的 Eclipse 可能存在问题,当我尝试创建枚举类时,会出现以下错误:Project 'progress' is not a J2SE 5.0 compliant project. 而当我按照您提供的书籍或教程中的示例声明枚举时,会出现编译错误。 - London
同样的错误,无论如何感谢您的时间,我要去睡觉了,明天会尝试搜索一些东西。 - London

0

去掉“;”。你可以这样声明枚举。

enum CoffeeSize { BIG, HUGE, OVERWHELMING }

欲了解更多信息,请访问此处


你使用的Java版本是哪个?我能够编译和运行以下代码:public class Test { enum CoffeeSize { BIG, HUGE, OVERWHELMING } public static void main(String args[]) { System.out.println(CoffeeSize.BIG); } } - Lalith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接