JAVA面向对象(十 六)------ 枚举(values()方法、枚举与switch、Enum类、enum和Enum的区别)

一、枚举的定义

        枚举也是在JDK1.5之后提出的概念,可以认为是多例设计的一种,只是相较来说更简单,也是因为有了枚举多例模式就受到了冷落,一般很少使用了。枚举也是一种定义有限个对象的结构。

        创建枚举要使用enum关键字,隐含了所创建的类都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类),如下:

enum Colors {
    BLUE,
    RED,
    GREED;
}
public class EnumTest {
    public static void main(String[] args) {
        Colors c = Colors.BLUE;
        System.out.println(c);
    }
}
BLUE

 二、枚举的values()方法

values()方法用于取得枚举对象的所有值,将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。

enum Colors {
    BLUE,
    RED,
    GREED;
}

public class EnumTest {
    public static void main(String[] args) {
        List<Colors> list = new ArrayList<Colors>();
        for(Colors c : Colors.values()){
            list.add(c);
        }
        System.out.println(list);
    }
}
[BLUE, RED, GREED]

三、 枚举与switch结构

JDK1.5后,switch可以使用枚举来作为条件:

enum Colors {
    BLUE,
    RED,
    GREED;
}
public class EnumTest {
    public static void main(String[] args) {
       Colors c = Colors.BLUE;
       switch (c) {
           case RED:
               System.out.println("红色");
               break;
           case BLUE:
               System.out.println("蓝色");
               break;
           case GREED:
               System.out.println("绿色");
               break;
       }
    }
}
蓝色

四、Enum类

上面定义枚举时,类名前的enum就是代表这个类默认继承Enum类,它有几个比较重要的方法:

  • 构造方法:Enum(String name,int ordinal)----------传入名字和序号
  • 获得名字:String name()
  • 获得序号:int ordinal()
enum Colors {
    BLUE,
    RED,
    GREED;
}
public class EnumTest {
    public static void main(String[] args) {
       for(Colors c:Colors.values()) {
           System.out.println(c.ordinal() + "*****" + c.name());
       }
    }
}
0*****BLUE
1*****RED
2*****GREED

其中,序号是定义枚举对象的顺序,与定义的顺序一致。

五、enum和Enum的区别

  • enum是JDK1.5之后提供的一个关键字,用于定义枚举类;
  • Enum是一个抽象类,使用了enum关键字的类就默认继承Enum类。
发布了92 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41231928/article/details/102720654
今日推荐