java中的枚举类型学习

枚举,在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类,和classinterface地位相同。代码规范

下面介绍几种简单的枚举类型的用法。code

1.通常用法

仍是上面的例子,咱们将它换成是枚举类型。对象

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

2.switch中使用枚举

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中的值直接使用枚举类型的具体实例,这点与上面的有一点不一样。

3.枚举类型中定义函数

与类相同,咱们也是能够在枚举中定义本身的函数的。

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 + "色");
    }
}

总结

咱们说,什么是规范?规范就是一个团队写的代码像一我的写的同样。因此不少时候,虽然咱们能够有不少的不一样的方法去实现一个需求,但为何咱们常常可以听到说“这种写法更好”这样的话,就是为了让咱们写出的代码更加容易理解,更加易读。

可是相反的,人们老是不免会有本身的想法,这样就不利于代码的一致性。而咱们又须要这种一直性,因此就 有了想枚举类型这样的限制一些本身想法的东西出现了。

代码规范的出现,是由于有了合做的关系。如今的软件已经愈来愈多的是由团队进行编写,而不是一我的的工做,因此咱们应该更加剧视代码规范。


参考:https://blog.csdn.net/qq_2709...

相关文章
相关标签/搜索