java中的枚举类型怎么定义?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 19:59:38
java中的枚举类型怎么定义?java中的枚举类型怎么定义?java中的枚举类型怎么定义?staticfinal通常跟的是一个int类型的常数,所以有时候可以用int型代替枚举在有些时候需要输出这个枚

java中的枚举类型怎么定义?
java中的枚举类型怎么定义?

java中的枚举类型怎么定义?
static final通常跟的是一个int类型的常数,所以有时候可以用int型代替枚举
在有些时候需要输出这个枚举量的名字(比如January),上面的方法输出的是int值,用类的话可以把名字一起输出
总的来说前者消耗资源比较少,后者更符合枚举的定义
枚举的确是一个类,在JDK1.4及以前,没有enum这个用法,那时候都是使用类来建立的,在《Java编程思想》中介绍了一类写法(详见第三版的章节8.1.3群组常量);JDK5以后,enum被引入,本质上就是一个类,所以可以被继承,总体思路和第三版这个写法类似,只是换了个名字(《Java编程思想》第四版第19章专门讲这个)
补充:我把早期的例子给出吧,你看一下,这就是早期的枚举的方法:
public final class Month{
private String name;
private Month (String nm){name=nm;}
public String toString(){return name;}
public static final Month
JAN=new Month("January"),
FEB=new Month("February"),
MAR=new Month("March"),
APR=new Month("April"),
MAY=new Month("May"),
JUN=new Month("June"),
JUL=new Month("July"),
AUG=new Month("August"),
SEP=new Month("September"),
OCT=new Month("October"),
NOV=new Month("November"),
DEC=new Month("December");
public static final Month month[]={
JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
};
public static final Month number(int ord){
return month[ord-1];
}
//main
public static void main(String args[]){
Month m=Month.JAN;
System.out.println(m);
m=Month.number(12);
System.out.println(m);
System.out.println(m==Month.DEC);
System.out.println(m.equals(Month.DEC));
System.out.println(Month.month[3]);
System.out.println(Month.APR);
}
}