小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
关于枚举类型
何时会用?我在日常开发中 要用到枚举类型一般是我们需要把某些数据定义为常量 许多地方需要用到,可以做一个统一得取值,这样也可有利于我们形成规范。例如我们可以把学校得不同阶段可以定义一个枚举类 代码如下所示:
public enum enumTest {
PRIMARY_SCHOOL(1,"小学"),JUNIOR_HIGH_SCHOOL(2,"初中"),
SENIOR_HIGH_SCHOOL(3,"高中"),UNIVERSITY(4,"大学");
private int state;
private String name;
//构造方法
private enumTest(int state,String name){
this.state = state; //代表得值
this.name = name; // 名字
}
public int getState() {
return state;
}
public String getName() {
return name;
}
}
我们定义了一个构造方法,其构造方法只能为private(这也就保证这个类是不能被实例化的)我们可以把获取参数值得方法暴露出来 相当于使用枚举类可以查看值取值 但是不能修改任何值,我们使用得时候就可以直接调用值
静态常量类
但是 我们在开发中也不一定要用枚举类 还可以直接定义常量 (利用:public static final)
public class staticTest implements Serializable {
public static final Integer PRIMARY_SCHOOL = 1;//小学
public static final Integer JUNIOR_HIGH_SCHOOL = 2;//初中
public static final Integer SENIOR_HIGH_SCHOOL = 3;//高中
public static final Integer UNIVERSITY = 4;//大学
}
区别
那这两个都可以定义我们的常量 我可以直接使用一般类为什么还要去使用枚举类,或者他俩之间有什么区别吗? 我们先看一段代码:
public static void testParam1(enumTest test){
System.out.println("指定参数传入是枚举类型:"+test.getState());
}
public static void testParam2(int stage){
System.out.println("参数传入是int类型:"+stage);
}
public static void main(String[] args) {
testParam1(enumTest.PRIMARY_SCHOOL);
testParam2(1);
}
从上面这段代码看出 静态代码他的类型是不安全的 例如testParam我们可以传任意值若传值错误 当常量类中找不到相应的值与之对应就可能会抛异常 而相反枚举类规定了只能传枚举类中包含的对象 这样就更为安全 其次 例如我们上面的枚举类我们可以调用其getName知道每个参数的含义 而相反常量类我们只有点入这个类看注释这个值代表的是什么类型
所以 你在开发中会用枚举类多一点还是静态常量类多一点