枚举

当我们需要重复使用一个常量的时候,我们可以通过static final定义,也可以使用枚举进行定义。

1:简单使用

  枚举类:Info

package com.zhao.enums;

public enum Info {
    SUCCESS,ERROR,FAILURE;
}

测试类

package com.zhao.enums;

import org.junit.Test;

public class InfoTest {
    private static final String  SUCCESS="SUCCESS";
    @Test
    public void test() {
        System.out.println(Info.SUCCESS);
        System.out.println(SUCCESS);
    }
}

在测试类中,我们用到了枚举和普通的定义常量,结果是一样的 都是输出SUCCESS。

2:带参数

  在我们用枚举的时候 ,希望枚举可以保存更多的信息,比如说 状态码+状态码说明。 就像map集合一样,有两个值。

package com.zhao.enums;

public enum Info {
    SUCCESS(1, "SUCCESS"), ERROR(2, "ERROR"), FAILURE(3, "FAILURE");
    private int state;
    private String stateInfo;

    private Info(int state, String stateInfo) {
        this.state = state;
        this.stateInfo = stateInfo;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getStateInfo() {
        return stateInfo;
    }

    public void setStateInfo(String stateInfo) {
        this.stateInfo = stateInfo;
    }

}

枚举类需要带有参数的构造函数,这样才能完成SUCCESS里面的参数的赋值,这个过程类似于单元测试中的参数化测试。

package com.zhao.enums;

import org.junit.Test;

public class InfoTest {
    @Test
    public void test() {
        System.out.println(Info.SUCCESS.getState());
        System.out.println(Info.SUCCESS.getStateInfo());
    }
}

  

或者可以这样写

package com.zhao.enums;

import org.junit.Test;

public class InfoTest {
    @Test
    public void test() {
        Info info=Info.SUCCESS;
        System.out.println(info.getState()+" "+info.getStateInfo());
    }
}

我们在传递参数的时候,可以传递一个枚举对象,然后这个枚举对象中保存着我们需要的信息 ,就像上面用到的状态码和状态码详情。

 

posted @ 2016-06-01 19:50  假寐的我  阅读(149)  评论(0编辑  收藏  举报