Java基础之枚举类型Enum的使用

225 阅读1分钟

定义:

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