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());
    }
}



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


目录
相关文章
|
18天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
101 60
|
2月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
62 9
Java——反射&枚举
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
81 5
|
2月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
3月前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
3月前
|
Java 开发者
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
53 2
|
3月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
45 0
|
4月前
|
Java
Java里的enum类型可以用这swich里吗
Java里的enum类型可以用这swich里吗
31 9
|
3月前
|
安全 Java 编译器
|
4月前
|
存储 缓存 Java
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决