所有的枚举类型都是Enum类的子类,枚举类型包括有限个命名的值。枚举类型的变量只能存储该类型中指定的枚举常量,或者null值。
枚举类型在定义时,可以添加指定的域,方法或者构造函数;当然构造函数为private,只是在声明枚举常量时调用,用于传递值。
枚举类型可以简单定义为:
enum Size{
//枚举常量列表必须写在前面,否则编译出错
Small,Mid,Larger,SuperLager;
}
也可以给枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数
enum Size_1{
//定义枚举常量,并利用构造函数传递值,
Small(“1”),Mid(“2”),Larger(“3”),SuperLarger(“4”);
//定义私有变量
private String size;
//定义构造函数,类型为private,用于给枚举常量传递值
private Size_1(String size){
this.size=size;
}
//重写toString()方法,用于返回枚举常量的值
@Override
public String toString() {
// TODO Auto-generated method stub
return this.size;
}
}
完整代码及具体使用如下:
package Enum;
public class Enum_Test {
enum Size{
//枚举常量列表必须写在前面,否则编译出错
Small,Mid,Larger,SuperLager;
}
enum Size_1{
//定义枚举常量,并利用构造函数传递值,
Small("1"),Mid("2"),Larger("3"),SuperLarger("4");
//定义私有变量
private String size;
//定义构造函数,类型为private,用于给枚举常量传递值
private Size_1(String size){
this.size=size;
}
//重写toString()方法,用于返回枚举常量的值
@Override
public String toString() {
// TODO Auto-generated method stub
return this.size;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Size size=Size.Larger;
String string=size.toString();//默认toString()方法用于返回枚举常量名
System.out.println(string);
//toString()的逆方法是valueOf(),即根据给定的常量名,返回对应的枚举变量
Size size2=Enum.valueOf(Size.class, "Larger");
System.out.println(size==size2);//比较两个枚举类型的值时,直接使用==,不需要使用equals();
Size_1 size_1=Size_1.Larger;
String string2=size_1.toString();//返回枚举常量的值
System.out.println(string2);
Size_1[] size_2=Size_1.values();//values()返回包含全部枚举常量的数组
System.out.println(size_2[1]);
System.out.println(size_1.ordinal());//ordinal()方法返回枚举常量的位置
}
}