定义:
public enum AccruedCleanEnum {
SPREAD("1","发票"),OTHER("0","收入"),NON_BUSINESS("2","支出");
private String index;
private String name;
AccruedCleanEnum(String index, String name) {
this.index = index;
this.name = name;
}
public static String getName(String index){
for(AccruedCleanEnum accruedCleanEnum : AccruedCleanEnum.values()){
if(accruedCleanEnum.getIndex().equals(index)){
return accruedCleanEnum.name;
}
}
return "";
}
public String getIndex() {
return index;
}
public String getName() {
return name;
}
}
样例:
public class Test {
@org.junit.Test
public void Test(){
AccruedCleanEnum.valueof(SPREAD);//获取对应名称的枚举类,后续可以通过switch来进行选择
AccruedCleanEnum.OTHER.getIndex();//获取键
AccruedCleanEnum.OTHER.getName(); //获取值
}
@Test
public void test1(){
System.out.println("SPREAD".equals(AccruedCleanEnum.SPREAD)); // 结果为false
System.out.println((AccruedCleanEnum.SPREAD));//结果为SPREAD,打印时候会调用toString()方法
System.out.println("SPREAD".equals(AccruedCleanEnum.SPREAD.name())) //结果为true.
}
}
Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回 Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
public enum Color {
Red,Green,Blue;
}
@Test
public void test1()
{
System.out.println( Color.values().length);
System.out.println( Color.Blue.toString());
System.out.println( Color.valueOf("Blue") == Color.Blue);
}
执行结果如下:
3
Blue
true
public enum ColorConstruct {
RED(1), GREEN(2), BLANK(3), YELLO(4);
private int index;
private ColorConstruct(int index) {
this.index = index;
}
}
@Test
public void test2()
{
System.out.println( ColorConstruct.values().length);
System.out.println( ColorConstruct.RED.toString());
System.out.println( ColorConstruct.valueOf("RED") == ColorConstruct.RED);
}
执行结果为:
4
RED
true