浅谈Java Enum作用与应用场景

在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 Java语言中对这样取值比较特殊的变量可以定义为枚举类型。 所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。 枚举是一个特殊的类,可以定义自己的变量,自己的方法,构造方法,甚至可以实现一个接口等等,只是它的实例是事先定义好的,限定了范围,可以使用的实例只能在限定范围内取得。

enum Car{

    //枚举实例,限定枚举实例范围
    lamborghini(888888,"兰博基尼"),tata(50000,"塔塔"),audi(666666,"奥迪"),fiat(555555,"菲亚特"),honda(444444,"宏达");

    //枚举变量
    private int    price;
    private String name;

    //构造方法,不能使用public修饰符,保证客户代码没有办法新建一个enum的实例
    Car(int price,String name){
        this.price = price;
        this.name  = name;
    }

    //枚举方法
    int getPrice(){
        return price;
    }

    String getName(){
        return name;
    }

}

枚举规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static, final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 , 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

了解了这些基本特性,我们来看看如何使用它们。

1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。

for    (Color    c:    Color.values()) {
    System.out.println(“find    value:”    +    c);    
}
经验分享 程序员 微信小程序 职场和发展