1、valueOf()方法
这是一个静态方法,传入一个字符串(枚举的名称),获取枚举类。如果传入的名称不存在,则报错。
public static void main(String[] args) throws Exception{
System.out.println(PayTypeEnum.valueOf("ALI_PAY"));
System.out.println(PayTypeEnum.valueOf("HUAWEI_PAY"));
}
2、values()方法
返回包含枚举类中所有枚举数据的一个数组。
public static void main(String[] args) throws Exception {
PayTypeEnum[] payTypeEnums = PayTypeEnum.values();
for (PayTypeEnum payTypeEnum : payTypeEnums) {
System.out.println("code: " + payTypeEnum.getCode() + ",describe: " + payTypeEnum.getDescribe());
}
}
3、ordinal()方法
默认情况下,枚举类会给定义的枚举提供一个默认的次序,ordinal()方法就可以返回枚举的次序。
public static void main(String[] args) throws Exception {
PayTypeEnum[] payTypeEnums = PayTypeEnum.values();
for (PayTypeEnum payTypeEnum : payTypeEnums) {
System.out.println("ordinal: " + payTypeEnum.ordinal() + ", Enum: " + payTypeEnum);
}
}
/**
ordinal: 0, Enum: ALI_PAY
ordinal: 1, Enum: WECHAT_PAY
ordinal: 2, Enum: UNION_PAY
*/
Enum抽象类常见方法
我们上篇文章已经讲过,枚举类实际上继承了Enum抽象类,因此Enum抽象类是所有枚举类型的基本类,下面是它的常见方法。
- ordinal()方法:该方法获取的是枚举变量在枚举类中声明的顺序,下标从0开始,如日期中的MONDAY在第一个位置,那么MONDAY的ordinal值就是0,如果MONDAY的声明位置发生变化,那么ordinal方法获取到的值也随之变化,注意在大多数情况下我们都不应该首先使用该方法,毕竟它总是变幻莫测的。
- compareTo(E o)方法:则是比较枚举的大小,注意其内部实现是根据每个枚举的ordinal值大小进行比较的。
- name()方法与toString():几乎是等同的,都是输出变量的字符串形式。
- getDeclaringClass(): 返回该枚举变量所在的枚举类。
需要再次说明的是,以上的方法都是Enum抽象类的方法,会被Enum的对象继承,而不是Enum的静态方法。而最终枚举值被实例化成了Enum对象,所以,枚举值拥有以上的方法。