一、基础
1、枚举类关键字enum
2、不同值之间用逗号分隔;
3、枚举类型可以定义为一个单独文件,也可以定义在其他类内部;
4、枚举变量的toString()方法和name()fangfa 返回其字面值,
二、相关方法
public static void main(String[] args) {
Size size=Size.SMALL;
System.out.println(size.toString());//SMALL
System.out.println(size.name());//SMALL
System.out.println(size.ordinal());//2
}
public enum Size{
LARGE,MEDIUM,SMALL
}
1、toString()
返回其字面值
2、name()
返回其字面值
3、int ordinal()
表示枚举值在声明时的顺序,从0开始
枚举类型实现了Comparable()接口,可以通过comareTo与其他枚举值比较,比较的大小就是ordinal的大小。
4、枚举类型可以用switch中,不过枚举值不能带枚举类型前缀
switch (size){
case LARGE:
System.out.println("this is lager!");break;
case MEDIUM:
System.out.println("this is mediu!");break;
case SMALL:
System.out.println("this is small!");break;
default:
System.out.println("unknow size!");break;
}
5、valueOf(String) 、values()
valueOf返回字符串对应的枚举值,values()返回一个包括所有枚举值的数组,顺序与声明时的顺序一致。
System.out.println(Arrays.toString(Size.values()));//[LARGE, MEDIUM, SMALL]
Size size1=Size.valueOf("LARGE");
System.out.println(size1.toString());//LARGE
三、枚举的实现
枚举类型会被编译器转换为一个对应的类,这个类继承了Enum类,Enum有两个实例变量:name,ordinal,在构造方法中需要传递,
1、转换后的类是一个final类,不能被继承;
2、枚举值实际上时静态变量,被final修饰,无法被修改;
3、values方法时编译器添加的,内部有一个values数组保持所有的枚举值