Java枚举Enum用法详解
前两篇博文对枚举处理器进行了详细的介绍,这里对枚举Enum的用法进行一个大致总结,以便于更好的理解代码逻辑。
还是以Enabled枚举类为例子进行汇总:
package com.example.simple.type;
public enum Enabled {
enabled(1), //启用
disabled(0); //禁用
private final int value;
private Enabled(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
一、方法
方法 | 详解 |
Enabled.values() |
以数组形式返回枚举类型的所有成员 System.out.println(Enabled.values()); 测试了一下上面代码实现方式不可行,并不能实现枚举类型成员实现,而要通过循环方式实现,如下: for(Enabled enabled:Enabled.values()){ System.out.println(enabled); } 或者: for(int i = 0;i<Enabled.values().length ; i++){ System.out.println(Enabled.values()[i]); } 测试结果为: enabled |
Enabled.valueOf(String string) |
根据普通字符串抓取到对应的枚举实例,普通字符串类型变为枚举类型 System.out.println(Enabled.valueOf("enabled")); 输出: enabled 若变为: System.out.println(Enabled.valueOf("aaa")); 会出现异常: java.lang.IllegalArgumentException: No enum constant com.example.simple.type.Enabled.aaa |
compareTo(Enabled enabled) |
比较两个枚举成员在定义时的顺序,通俗来说就是前后顺序 compare(Enabled.valueOf("enabled")); public static void compare(Enabled enabled){ for(int i = 0;i<Enabled.values().length ; i++){ System.out.println(enabled+"和"+ Enabled.values()[i] + "的比较结果是" + enabled.compareTo(Enabled.values()[i])); } } 测试结果为: enabled和enabled的比较结果是0 如果枚举类中将enabled和disabled前后顺序倒过来,那么结果是: enabled和disabled的比较结果是1 |
Enabled.disabled |
获取到对应的枚举值disabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工,来一小行代码测试一下: System.out.println(Enabled.disabled); Enabled disabled = Enabled.disabled; System.out.println(disabled); 输出结果为: disabled |
Enabled.enabled |
获取到对应的枚举值enabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工。 |
ps:这里还有ordinal()函数,作用是获取一个成员在枚举中的索引位置。
for(int i=0;i<Enabled.values().length;i++) { System.out.println("索引"+Enabled.values()[i].ordinal()+",值:"+Enabled.values()[i]); }
测试结果为:
索引0,值:enabled
索引1,值:disabled
至此,结束。