1.含义:
enum是计算机中的一种数据类型,枚举类型。使变量的取值被限定在一定的范围内,比如一年有四季。在枚举类型的定义中列举出所有可能的取值,则说明为该“枚举”类型的变量取值不能超过定义的范围。对于枚举类型来说,它是一种基本数据类型,不是一种构造类型,不能够再被分解为任何基本类型。
枚举类型中一般规定了,枚举值是常量,不是变量,不能在程序中用赋值语句再进行赋值,只能把枚举值赋给枚举变量。一定要把数值赋给枚举变量时,必须使用强制类型转换。对于Java语言,在enum出现之前,一般使用接口来实现列举的,一个enum对象中不可能有两个或多个相同的属性或值,
public interface Season{
static winter = 1;
static spring = 0;
}
引入enum的Java的列举编程方便许多,只定义一个enum型的对象,enum对象的值会自动获得一个数字值,从0开始,依次递增。
public class EnumDemo{
private enum Seasons{
winter,spring,summer,fall
}
public static void main(String[] args){
for(Seasons s:Seasons.values()){
System.out.println(s);
}
}
}
会依次输出winter,spring,summer,fall
Java中常用的枚举
常量:
直接可以定义枚举的值
public enum Seasons{
spring,summer,fall,winter
}
switch:
enum Seasons{
spring,summer,fall,winter
}
public class ChooseSeason{
Seasons season = Seasons.fall;
public void change(){
witch (season){
case spring :
season = Seasons.spring;
break;
case summer:
season = Seasons.summer;
break;
case fall:
season = Seasons.fall;
break;
case winter:
season = Seasons.winter;
break;
}
}
}
向枚举中添加新的方法:
在定义自己的方法时,必须在enum实例序列的最后添加一个分号,enum实例必须放在最前面
public enum Season{
spring("春天",1),
summer("夏天",2),
fall("秋天",3),
winter("冬天",4);
private String name;
private int index;
private Season(String name,int index){
this.index = index;
this.name = name;
}
//添加的方法
public static String getName(int index){
for(Season s :Season.values()){
if(s.getIndex() == index){
return s.name;
}
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
实现接口:
所有的枚举都继承自Java.lang.enum类,Java不支持多继承,因此枚举对象不能再继承其他类
public interface Behaviour{
void print();
String getInfo();
}
public enum Season implements Behaviour{
spring("春天",1),summer("夏天",2),fall("秋天",3),winter("冬天",4);
private String name;
private int index;
private Season(String name,int index){
this.name = name;
this.index = index;
}
public String getInfo(){
return this.name;
}
public void print(){
System.out.println(this.index+":"+this.name);
}
}
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复,EnumMap中的key是enum类型,而value则可以是任意类型。