Java的枚举类型
枚举是java一个特别的类,定义的时候用enum关键词。其中的类型的命名均要大写。它具有一些新的特性。我们看具体的例子。
public enum Enumtest {
STARCRAFT,HELLO,DOTA;//three named value;
}
上面是定义的一个枚举类,我定义了三种类型。Java会自动给枚举类型提供一些方法,如获取枚举的值,得到枚举类型的定义顺序等等,如下所示:
Enumtest[] test =Enumtest.values();//获得枚举类型的数组
for(int i =0;i<test.length;i++){
System.out.print(test[i]);System.out.println("是第"+test[i].ordinal()+"被定義的");//ordinal方法可以获得枚举类型定义的次序。
}
由此,我们可以得到结果:
STARCRAFT是第0被定義的
HELLO是第1被定義的
DOTA是第2被定義的
枚举也可以配合switch语句使用:一般来说,在switch中使用的是整数,enum类型为我们提供了更加便利的方式。
public class Simpleuse {
public static void main(String[] args) {
Simpleuse sim = new Simpleuse();
sim.searchenum(Enumtest.HELLO);
sim.searchenum(Enumtest.STARCRAFT);
sim.searchenum(Enumtest.DOTA);
}
void searchenum(Enumtest test){
switch(test){
case DOTA: System.out.println("Dota is a fun game");break;
case HELLO: System.out.println("Hello everyone");break;
case STARCRAFT: System.out.println("It's a difficult game");break;
default: System.out.println("Here are some games");
}
}
}
结果如下:
Hello everyone
It's a difficult game
Dota is a fun game
开头说到,枚举类基本可以被称之为一个常规的类,可以在其中定义自己的方法。也可以拥有自己的main方法如下所示:在Java中,定义枚举类型必须在最前面定义,否则会出现错误。
public enum Gamenum {
//three types of gamenum;
DOTA("Defense of the ancients"),STARCRAFT("A RTS game"),MARIO("An interesting game for kids");
private String description;
//constructor
private Gamenum(String description){
this.description=description;
}
public String getDescriptions(){
return description;
}
public static void main(String [] agrs){
for(Gamenum gamenum:Gamenum.values()){
System.out.println(gamenum+"---"+gamenum.description);
}
}
}
输出结果为:
DOTA---Defense of the ancients
STARCRAFT---A RTS game
MARIO---An interesting game for kids
To be continued...