Java开发指南 | 第三十篇】Java 枚举(enum)

简介: Java开发指南 | 第三十篇】Java 枚举(enum)

Java 枚举(enum)

枚举(Enumeration)是一种特殊的数据类型,用于表示一组具名的常量集合,例如表示星期几、月份、颜色等。


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


枚举类的声明

在类外声明枚举类:


enum color{
  orange,green,grey,pink,blue;
}
public class Ice{
    public static void main(String[] args) {
      color i=color.blue;
      System.out.println(i);
    }
}



在内部类中声明枚举类:


public class Ice{
  enum color{
  orange,green,grey,pink,blue;
  }
    public static void main(String[] args) {
      color i=color.blue;
      System.out.println(i);
    }
}



迭代枚举元素

可以使用 for 语句来迭代枚举元素:


public class Ice{
  enum color{
  orange,green,grey,pink,blue;
  }
    public static void main(String[] args) {
      for(color i:color.values())
      System.out.println(i);
    }
}



在 switch 中使用枚举类

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


public class Ice{
  enum color{
  orange,green,grey,pink,blue;
  }
    public static void main(String[] args) {
      color ice=color.blue;
      switch(ice)
      {
      case orange:
      System.out.println("橙色");
      break;
      case green:
      System.out.println("绿色");
      break;
      case blue:
      System.out.println("蓝色");
      break;
      default:
      break;
      }
    }
}




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

在应用枚举类时,常使用values(), ordinal() 和 valueOf() 三种方法。


1、values() 返回枚举类中所有的值。


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


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


public class Ice{
  enum color{
  orange,green,grey,pink,blue;
  }
    public static void main(String[] args) {
      //调用 values()
      color[] ice = color.values();
    
      //迭代枚举
      for(color col:ice)
      {
      //查看索引
      System.out.println(col+" at index "+col.ordinal());
      }
    
      //返回枚举常量
      System.out.println(color.valueOf("blue"));
      //若不存在,则报错 IllegalArgumentException 
      System.out.println(color.valueOf("red"));
    }
}




枚举类成员

枚举跟普通类一样可以用自己的变量、方法和构造函数。


其中构造函数只能使用 private 访问修饰符,所以外部无法调用,因此只能通过枚举定义的常量来访问。


示例如下:
enum Direction {
    NORTH("North"),
    EAST("East"),
    SOUTH("South"),
    WEST("West");
    private String name;
    // 构造函数是私有的,只能在枚举内部使用
    private Direction(String name) {
        this.name = name;
    }
    // 获取方向名称
    public String getName() {
        return name;
    }
}
public class Ice {
    public static void main(String[] args) {
        Direction north = Direction.NORTH;
        System.out.println("Name: " + north.getName());
    }
}



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


目录
相关文章
|
2月前
|
安全 Java 程序员
Java语言枚举(Enum)的深入探索
Java语言枚举(Enum)的深入探索
|
2月前
|
Java ice
【Java开发指南 | 第二十八篇】Java封装
【Java开发指南 | 第二十八篇】Java封装
25 0
|
14天前
|
JSON 前端开发 Java
Java与前端框架集成开发指南*
Java与前端框架集成开发指南*
|
22天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
1月前
|
安全 Java 编译器
Java基础14-深入理解Java枚举类(二)
Java基础14-深入理解Java枚举类(二)
13 4
|
13天前
|
JSON 前端开发 Java
Java与前端框架集成开发指南
Java与前端框架集成开发指南
|
1月前
|
Java 编译器
31. 【Java教程】枚举类
31. 【Java教程】枚举类
16 1
|
20天前
|
Java
java编写枚举校验类
java编写枚举校验类
11 0
|
1月前
|
安全 Java
比较java枚举成员使用equal还是==
比较java枚举成员使用equal还是==
13 0
|
1月前
|
Java 编译器
Java基础14-深入理解Java枚举类(一)
Java基础14-深入理解Java枚举类(一)
20 0