枚举,在java中看似很小的一部分,却帮咱们解决了不少大问题。java
咱们知道生活中的不少地方均可以使用枚举,可是不少人在实际编程的时候却不多使用枚举类型,是由于枚举类型很差用吗?我认为不是的,而是他们并不了解枚举。这也是我以前的状态。编程
不使用枚举,对status(状态)等一些数目有限的对象,咱们一般会使用静态常量的形式来表示,好比下面这样:安全
public class Test() { private static final int CHECK_APPOINTMENT = 1; // 预定中 private static final int CHECK_PENDING_FEEDBACK = 2; // 待反馈 private static final int CHECK_FEEDBACK = 3; // 已反馈 private static final int CHECK_ADMISSIBLE = 4; // 已受理 private static final int CHECK_ALREADY_CHECKED = 5; // 已检定 private static final int CHECK_RESERVATION_FAILURE = 6; //预定失败 ... }
这时候,就会这么使用这些变量:函数
test.setStauts(Test.CHECK_APPOINTMENT);
好,这样按规矩来,没有任何问题,这样写的基础是创建在小组中的每一个人都对项目有足够的了解,而且记忆力还不能太差了。可是就怕有些人不安规矩来:this
test.setStatus(123);
完了,傻眼了。因此这就体现了枚举类型比静态常量更加的安全。.net
咱们这里说的枚举类型是enum
类,和class
,interface
地位相同。代码规范
下面介绍几种简单的枚举类型的用法。code
仍是上面的例子,咱们将它换成是枚举类型。对象
public enum ProcessStatusCode { CHECK_APPOINTMENT("预定中(待预定)", (short)1), CHECK_PENDING_FEEDBACK("待反馈", (short)2), CHECK_FEEDBACK("已反馈(待受理)", (short)3), CHECK_ADMISSIBLE("已受理(待检定)", (short)4), CHECK_ALREADY_CHECKED("已检定(检定完成)", (short)5), CHECK_RESERVATION_FAILURE("预定失败", (short)6); private Short code; // 代码 private String name; // 名称 processStatusCode(String name, Short code) { this.name = name; this.code = code; } }
首先,先定义枚举类型,须要说明的是,这里必须在开头就定义具体实例,而后才是定义变量,以及构造函数。blog
而且咱们能够看到,在定义实例的时候,咱们调用了构造函数,可是这是一种隐式
的调用。
调用的时候很简单:
ProcessStatusCode.CHECK_APPOINTMENT
switch
语句使用枚举类型是再合适不过的了,这能够大大的增长代码的易读性。
enum Signal { GREEN, YELLOW, RED } public class TrafficLight { Signal color = Signal.RED; // 初始化信号灯颜色 public void change() { switch (color) { case RED: color = Signal.GREEN; break; case YELLOW: color = Signal.RED; break; case GREEN: color = Signal.YELLOW; break; } } }
咱们看到,在switch...case
语句使用枚举类型的时候,case
中的值直接使用枚举类型的具体实例,这点与上面的有一点不一样。
与类相同,咱们也是能够在枚举中定义本身的函数的。
public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String name; private int index; // 构造方法 private Color(String name, int index) { this.name = name; this.index = index; } public void display() { System.out.println("这是" + this.name + "色"); } }
咱们说,什么是规范?规范就是一个团队写的代码像一我的写的同样。因此不少时候,虽然咱们能够有不少的不一样的方法去实现一个需求,但为何咱们常常可以听到说“这种写法更好”这样的话,就是为了让咱们写出的代码更加容易理解,更加易读。
可是相反的,人们老是不免会有本身的想法,这样就不利于代码的一致性。而咱们又须要这种一直性,因此就 有了想枚举类型这样的限制一些本身想法的东西出现了。
代码规范的出现,是由于有了合做的关系。如今的软件已经愈来愈多的是由团队进行编写,而不是一我的的工做,因此咱们应该更加剧视代码规范。