SCJP认证 1.5.5 声明枚举(1)

17 篇文章 0 订阅

从5.0版本开始,Java允许限制一个变量只能具有几个预定义的值中的某个值——换句话说,是来自于枚举列表中的一个值(枚举列表中的奇怪项背奇怪地成为“枚举”——enum)

利用枚举有助于减少代码中的bug。

例如,在咖啡店应用程序中,你可能想将规格选择限制为BIG,HUGE和OVERWHELMING,如果允许订购LARGE或GRANDE规格的,则可能引发错误。这是枚举就可以提供帮助。通过下面简单的声明,就可以保证编译器就会阻止将除BIG,HUGE和OVERWHELMING之外的任何内容赋予CoffeeSize

从此,获得CoffeeSize的唯一方式是使用像下面这样的语句:

将枚举常量全部大写并不是必须的,但根据Sun的编码规范,常量要大写,这是一个好的做法。

枚举的基本成分是其常量(即BIG、HUGE和OVERWHELMING),尽管一分钟后你将看到枚举还包含更多内容。枚举可以被声明为他们自己独立的类,或者被声明为i类成员,但是不能在方法内声明它们!

在类外声明枚举如下所示:

 上面的代码可以是单一的文件的一部分(记住,该文件必须被命名为CoffeeTest.java,因为这是该文件中的公共类的名称)。要记住的要点是:可以只用public或默认修饰符声明类外的美剧,就像飞内部类一样。下面是在类内声明枚举的一个例子:

通过这些例子呀一重点理解的是:枚举可以在自己的类内声明,也可以位于另一个类中,而访问枚举成员的语法依赖于声明枚举的位置。

下面的代码是非法的:

 Java语言设计者允许选择在枚举声明的末尾位置放置一个分号(在这个枚举声明没有其他声明的情况下),着和容易是人困惑:

那么,在创建枚举时会得到什么呢?要记住的最重要的事情是:枚举不是字符串或整数!每个枚举的CoffeeSize类型实际上都是CoffeeSize的实例。换句话说,BIG是CoffeeSize类型的。可以将枚举看做类的一种,形式如下(但不完全这样) :

 

注意每个枚举值BIG、HUGE和OVERWHELIMING是如何成为类型CoffeeSize的实例的。它们被表示为static和final,在Java世界中,这被当做常量。还要注意,每个枚举值都知道它的索引或位置。换句话说,枚举值中的顺序是生民事决定的。可以将CoffeeSize枚举看做存在于CoffeeSize类型的数组中。在后面的一张中将看到,可以通过为任何枚举类型调用values()方法来遍历枚举的值(本章中不必关心这一点)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值