Java中的枚举

  1. 概述
  2. 枚举类的定义
  3. 特性
  4. 常用方法

概述

Java 枚举是一个特殊的类,一般表示一组常量。

由于枚举类型的实例是常量(枚举值都是 public static final 的),因此按照命名惯例,它们都用大写字母表示(如果名称中含有多个单词,使用下划线分隔)。

枚举类的定义

enum Color              //用enum关键字定义,默认继承Enum类
{ 
    RED, GREEN, BLUE;   //实例对象 
} 

使用:

enum Color
{
    RED, GREEN, BLUE;
}

public class Test
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

输出结果:

RED

枚举 与 switch 配合使用:

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;

    switch(myVar) {
      case RED:
        System.out.println("红色");
        break;
      case GREEN:
         System.out.println("绿色");
        break;
      case BLUE:
        System.out.println("蓝色");
        break;
    }
  }
}

输出结果:

蓝色

特性

除了不能继承自一个 enum 之外,我们基本上可以将 enum 看作一个常规的类。也就是说我们可以向 enum 中添加方法。enum 甚至可以有 main() 方法。

enum Color
{
    RED, GREEN, BLUE;       //实例序列写在方法、属性之前。

    // 构造函数
    private Color()
    {
        System.out.println("Constructor called by : " + this.toString());
    }

    public void colorInfo()
    {
        System.out.println("Universal Color");
    }
}

public class Test
{    
    // 输出
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
        c1.colorInfo();
    }
}

输出结果:

Constructor called by : RED
Constructor called by : GREEN
Constructor called by : BLUE
RED
Universal Color
  • 注:Java 要求你必须先定义 enum 实例。如果在定义 enum 实例之前定义了任何方法或属性,那么在编译时就会得到错误信息。 –《On Java 8》

常用方法

  • values(): 返回枚举类中所有的值构成的数组。

  • ordinal(): 方法可以找到每个枚举常量的索引,就像数组索引一样。

    索引从0开始,顺序由枚举实例在序列中的位置(先后顺序)有关。

  • valueOf(): 方法返回指定字符串值的枚举常量。

enum Color
{
    RED, GREEN, BLUE;
}

public class Test
{
    public static void main(String[] args)
    {
        for(Color color:Color.values()){
            System.out.println("颜色:" + color.name() + "-序号:" + color.ordinal());
        }

        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
    }
}

  • enum:JDK1.5之后提供的一个关键字,用于枚举类的定义。
  • Enum:一个抽象类,所有使用 enum 关键字定义的类默认继承此类。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1401362462@qq.com

文章标题:Java中的枚举

字数:582

本文作者:百xiao生

发布时间:2020-11-25, 18:23:35

最后更新:2020-12-07, 15:08:31

原始链接:https://baixiaoshengzjj.top/2020/11/25/Java%E4%B8%AD%E7%9A%84%E6%9E%9A%E4%B8%BE/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。