前两篇博文对枚举处理器进行了详细的介绍,这里对枚举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
System.out.println(Enabled.values()[i]);
}
测试结果为:
enabled
disabled
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 voidcompare(Enabled enabled){for(int i = 0;i
System.out.println(enabled+"和"+Enabled.values()[i]+ "的比较结果是" +enabled.compareTo(Enabled.values()[i]));
}
}
测试结果为:
enabled和enabled的比较结果是0
enabled和disabled的比较结果是-1
如果枚举类中将enabled和disabled前后顺序倒过来,那么结果是:
enabled和disabled的比较结果是1
enabled和enabled的比较结果是0
Enabled.disabled
获取到对应的枚举值disabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工,来一小行代码测试一下:
System.out.println(Enabled.disabled);
Enabled disabled=Enabled.disabled;
System.out.println(disabled);
输出结果为:
disabled
disabled
Enabled.enabled
获取到对应的枚举值enabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工。
ps:这里还有ordinal()函数,作用是获取一个成员在枚举中的索引位置。
for(int i=0;i
{
System.out.println("索引"+Enabled.values()[i].ordinal()+",值:"+Enabled.values()[i]);
}
测试结果为:
索引0,值:enabled
索引1,值:disabled
至此,结束。