枚举
当我们需要重复使用一个常量的时候,我们可以通过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()); } }
我们在传递参数的时候,可以传递一个枚举对象,然后这个枚举对象中保存着我们需要的信息 ,就像上面用到的状态码和状态码详情。