前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java枚举类

Java枚举类

作者头像
joshua317
发布2021-12-04 10:53:06
发布2021-12-04 10:53:06
1.1K00
代码可运行
举报
文章被收录于专栏:技术博文技术博文
运行总次数:0
代码可运行

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等,订单的状态。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

1.定义一个枚举类。

代码语言:javascript
代码运行次数:0
复制
enum Color 
{ 
    RED, BLUE, YELLOW; 
} 
代码语言:javascript
代码运行次数:0
复制
enum Color
{
    RED, BLUE, YELLOW; 
}
 
public class ColorDemo
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        Color c2 = Color.BLUE;
        Color c3 = Color.YELLOW;
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
}

2.内部类中使用枚举

枚举类也可以声明在内部类中

代码语言:javascript
代码运行次数:0
复制
public class ColorDemo
{
    enum Color
    {
        RED, BLUE, YELLOW; 
    }
 
    // 执行输出结果
    public static void main(String[] args)
    {
        System.out.println(Color.RED);
        System.out.println(Color.BLUE);
        System.out.println(Color.YELLOW);
    }
}

3.迭代枚举元素

代码语言:javascript
代码运行次数:0
复制
enum Color
{
    RED, BLUE, YELLOW; 
}
public class ColorDemo {
  public static void main(String[] args) {
    for (Color myVar : Color.values()) {
      System.out.println(myVar);
    }
  }
}

4.在 switch 中使用枚举类

枚举类常应用于 switch 语句中:

代码语言:javascript
代码运行次数:0
复制
enum Color
{
    RED, BLUE, YELLOW; 
}
public class ColorDemo {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;

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

5.values(), ordinal() 和 valueOf() 方法

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Seriablizable 和 java.lang.Comparable 两个接口。

values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:

  • values() 返回枚举类中所有的值。
  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
  • valueOf()方法返回指定字符串值的枚举常量。
代码语言:javascript
代码运行次数:0
复制
enum Color
{
    RED, BLUE, YELLOW; 
}
 
public class ColorDemo
{
    public static void main(String[] args)
    {
        // 调用 values()
        Color[] arr = Color.values();
 
        // 迭代枚举
        for (Color col : arr)
        {
            // 查看索引
            System.out.println(col + " at index " + col.ordinal());
        }
 
        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
    }
}

6.枚举类成员

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用。

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

枚举类中的抽象方法实现,需要枚举类中的每个对象都对其进行实现。

代码语言:javascript
代码运行次数:0
复制
enum Color{
    RED{
        public String color(){//枚举对象实现抽象方法
            return "红色";
        }
    },
    BLUE{
        public String color(){//枚举对象实现抽象方法
            return "蓝色";
        }
    },
    YELLOW{
        public String color(){//枚举对象实现抽象方法
            return "黄色";
        }
    };
    public abstract String color();//定义抽象方法
}

public class ColorDemo{
    public static void main(String[] args) {
        for (Color c:Color.values()){
            System.out.print(c.color() + "、");
        }
    }
}
代码语言:javascript
代码运行次数:0
复制
enum Color {
    /**
     * 颜色-红色
     */
    RED("红色"),
    /**
     * 颜色-蓝色
     */
    BLUE("蓝色"),

    /**
     * 颜色-黄色
     */
    YELLOW("黄色");

    private String color;

    private Color(String color) {
        this.color = color;
    }

    public String color() {
        return color;
    }
}

public class ColorDemo {
    public static void main(String[] args) {
        System.out.println(Color.RED + ":" + Color.RED.color());
        System.out.println(Color.BLUE + ":" + Color.BLUE.color());
        System.out.println(Color.YELLOW + ":" + Color.YELLOW.color());
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.定义一个枚举类。
  • 2.内部类中使用枚举
  • 3.迭代枚举元素
  • 4.在 switch 中使用枚举类
  • 5.values(), ordinal() 和 valueOf() 方法
  • 6.枚举类成员
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档