欢迎来到天天文库
浏览记录
ID:38396242
大小:323.98 KB
页数:18页
时间:2019-06-11
《轻松学Java之枚举x》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章枚举随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。在程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。要实现这种功能就要用到我们这一章要学习的枚举。12.1枚举简介事先考虑到某一变量可能的取值,尽可能用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法。用这种方法定义的类型称为
2、枚举类型。在生活中有很多关于枚举的例子,就如图12.1所示的两个例子。12.2枚举的使用枚举在Java语言中的作用很大。它可以对类似的相同类型的对象同时进行声明,在程序中调用这些元素时,不会出现混淆和重复。由于枚举的统一性,使得开发人员编写的代码量大大减少了,同时增加了程序的阅读性和修改性。下面我们就来学习如何定义和使用枚举。12.2.1常见的枚举定义方法在JDK1.5中,Java引入了关于枚举类型的设置方法,即使用enum关键字。其一般的定义语法,如图12.2所示。12.2.1常见的枚举定义方法例如我们可
3、以举一个例子,比如设枚举名为weekday,枚举值有7个,即一周的7天。则凡被说明为weekday类型的变量取值,只能是这7天中的某一天。枚举变量有三种说明方式,我们可以采取任意一种方式进行说明,如图12.3所示。12.2.2在程序中使用枚举当创建了一个枚举类型之后,就意味着要在今后的代码中进行调用。调用先前定义的枚举类型,同其他调用语句一样,需要声明该类的一个对象,并通过对象对枚举类型进行操作。12.2.3在switch语句中使用枚举使用enum关键字创建的枚举类型,可以直接在多处控制语句中使用,如swi
4、tch语句等。在JDK1.5之前,switch语句只能用于判断字符或数字,而在JDK1.5之后,通过enum创建的枚举类型,也可以被switch判断使用。12.3枚举类和枚举关键字枚举类型的出现,有助于简洁程序的代码量,减少出错率。在大多数情况下,枚举类和枚举关键字是相互依存的。12.3.1枚举类枚举类是在java.lang包下的一个公共类,它的作用是用来构造新的枚举类型。这是JDK1.5之后Java推出的一个新的类,用来完善枚举这一常用集合在Java中的不足。在JDKAPI中我们可以看到,enum类定义了
5、大约十多个方法。我们可以用表12.1简要的介绍一下这些方法。方法名称方法作用clone()复制一份当前对象,并返回compareTo()比较此枚举于指定对象的顺序equals()当指定对象等于此枚举常量时,返回truehashCode()返回枚举常量的哈希码name()返回枚举常量的名称,在其枚举声明中对其进行声明ordinal()返回枚举常量的系数toString()返回枚举常量的名称,它包含在声明中valueOf()返回带指定名称的指定枚举类型的枚举常量values()返回当前对象取值范围12.3.2枚
6、举关键字相对于枚举类,枚举关键字(enum关键字)则是定义的一个枚举类型。实际上,在此次定义的过程中,通过enum关键字相当于定义了一个类,并且此类将继承enum类。12.4类集对于枚举的支持在JDK1.5之后,Java中又增加了两个类集的操作类,EnumMap和EnumSet来更好地使用枚举。12.4.1EnumMapMap是Java中的一个类,EnumMap是Map类的子类。我们可以调用EnumMap的方法来实现对对象的控制。12.4.2EnumSetEnumSet本身是Set接口的子类但是此类中并没有
7、定义任何的构造方法,这表示构造方法被私有化了。所有对此类方法的操作均是静态操作。12.5枚举的构造方法、接口和抽象方法枚举的使用非常灵活。枚举可以应用于代码中的各个角落,只要定义的对象具有枚举的形式,均可以使用枚举对其定义,这样在减少代码量的同时,也增加了代码的可读性和可操作性。我们下面分别对枚举的构造方法、接口和抽象方法作一简要说明。12.5.1枚举的构造方法在枚举中可以直接定义构造方法。但要注意的是:一旦构造方法定义之后,则所有的枚举对象都必须明确调用此构造方法。12.5.2枚举的接口当一个枚举实现一个
8、接口之后,各个枚举对象都必须分别实现接口中的抽象方法。在调用枚举时,需要在后面实现在接口中定义的方法getColor(),只有这样,才能实现接口,而想直接调用RED("红色")这样的方式是错误的。定义在枚举里的抽象方法必须在后期声明的枚举类型中,任何一个对象都分别实现接口中的抽象方法后才能测试成功。12.5.3枚举的抽象方法我们可以通过枚举实现接口,同样,Java也可以在枚举中直接定义抽象方法。并且在一个枚举中可
此文档下载收益归作者所有