匿名用户
1级
2016-02-04 回答
枚举也是一种类,不能像你代码中那样把它理解成一个数组,
一个类该怎么写枚举类也该咋写。
“1,2,3”是一种数据类型,它不是对象也不是变量,肯定报错。
下面是从网上摘的一个说明,你看下
枚举(enum):
1.Java 5 新增,是类类型,但不能使用new
不能继承其他类,也不能作为超类,即不能扩展.但隐式继承自java.lang.Enum类,可以实现接口.
2.枚举包括两个预定义方法:
public static enum-type[] values();
public static enum-type valueOf(String st); 用于for-each循环遍历枚举常量.
且可以用”==”来判断两个枚举常量是否相等.
从Enum继承而来三个方法:
final int ordinal() ----返回常量顺序值
final int compareTo(enum-Type e) -----同一枚举中比较顺序值
final Boolean equals(enum-type e) -----同一枚举中是否相等,相当于”==”
3.在switch表达示中case语句不需也不能加入枚举的类型,否则会出错.
4.枚举是类类型,可以定义构造函数,且可以重载,同样也可定义其他的实例方法和变量,这些每一个枚举常量都有自己的一个副本.甚至可以定义静态的成员.可以实现接口.
如:public enum Answer implements DoAnswer{
Perfect(10),Good(8),Common(5),Bad(2),Terrible;//枚举常量,相当于public static Answer类型
public static int type=1; //定义一个静态成员
private int degree; //定义一个实例成员变量
private Answer(){ //定义一个不带参数的构造函数,注只能为private的,默认也一样
degree=-1;
}
private Answer(int d){ //定义一个带参数的重载构造函数
degree=d;
}
public String getProblem(){ //实现接口方法
return DoAnswer.PROBLEM;
}
public int getDegree(){ //定义一个实例成员函数
return degree;
}
public Answer getAnswer(){ //定义一个返回自身的成员函数,每一个常量都有自己的副本
return this;
}
}