java编程枚举类型那些事!枚举类型定义和重写枚举的方法
枚举类型(EnumeratedType)很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。
而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。
简单的枚举类型定义
假如你希望创建一个颜色库,你可以这样定义枚举类型
enumColor{red,green,yellow,black};
然后你就可以使用它
ColorT=Color.red;
if(T==Color.red)
System.out.println("iamred");
switch(T){
casered:
System.out.println("iamred");
break
}
定制枚举类型
在C/C++中,我们可以这样使用枚举变量
enumcolor{red,green};
enumcolora=1;//aisgreen
在Java中定义枚举类型的值
enumcolor{
red(1),green(2);
privatefinalintnumber;
color(inti){
this.number=i;
}
publicgetValue(){
returnthis.number;
}
}
然后使用T.getValue()便可获取绑定的值
重写枚举的方法
枚举类给我们提供的方法有,具体可以查看Enum.java
name,toString,valueOf//获取名字 equals//比较 ordinal//获取位置
所有的枚举都继承自java.lang.Enum类。
由于Java不支持多继承,所以枚举对象不能再继承其他类,但是可以实现接口
Test
enumnumber{
zero(0),one(1),two(2);
intn;
number(inti){
this.n=i;
}
publicintgetValue(){
returnthis.n;
}
}
interfacePeople_State{
StringgetState();
State_EnumChangeState();
}
enumState_EnumimplementsPeople_State{
normal("正常"),stop("停止");
privatefinalStringstate;
State_Enum(Strings){
this.state=s;
}
publicStringtoString(){
returnstate;
}
@Override
publicStringgetState(){
returnstate;
}
@Override
publicState_EnumChangeState(){
if(this==normal)
returnstop;
else
returnnormal;
}
}
publicclassTest_Enum{
publicstaticvoidmain(String[]args){
numberz=number.zero;
State_Enumstate=State_Enum.normal;
System.out.println(z.getValue());
System.out.println(z);
System.out.println(number.one);
switch(z){
casezero:
System.out.println(0);
break;
caseone:
System.out.println(1);
break;
casetwo:
System.out.println("2");
break;
}
//equals
if(z.equals(number.one)){
System.out.println("equal!");
}else{
System.out.println("unequal");
}
//valueOf
System.out.println(number.valueOf("zero"));
//ordinal
System.out.println(z.ordinal());//theindexofvalues
System.out.println(state.toString());
state=state.ChangeState();
System.out.println(state.getState());
}
}
Output
0 zero one 0 unequal zero 0 正常 停止
以上就是本文关于java编程枚举类型定义和重写枚举的方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java编程long数据类型的使用问题、java编程基础之模仿用户登录代码分享等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!