讲解一下java枚举(enum)以及使用方法

在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 Java.lang 包中,在上面的这种情况下,enum就能派上用场了。枚举类型的用途不仅如此,具体可用场景可看下面的介绍

1、常量

以前我们定义一个常量通常都是使用 public static final …… 定义的,如下面:

public static final CONSTANT_STR = "TEST";

或者使用接口定义的变量,因为接口定义的变量默认都是public static final,如下:

/**
* 星期的常量接口
*/
public interface IWeekConstants {
   String MON = "Mon";
   String TUE = "Tue";
   String WED = "Wed";
   String THU = "Thu";
   String FRI = "Fri";
   String SAT = "Sat";
   String SUN = "Sun";
}

有了枚举我们可以使用下面的方式:

public enum WeekEnum {
   MON, TUE, WED, THU, FRI, SAT, SUN;
}

解释:创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum > ,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序

上面那段代码声明的enum对象实际上调用了7次Enum(String name, int ordinal) 这个构造函数。(name 是常量,上面是MON,TUE等,ordinal是被创建顺序)

new Enum
  
   (
   "MON",0); new Enum
   
    (
    "TUE",1); new Enum
    
     (
     "WED",2); 。。。。。。 
    
   
  

2、switch

当我们用switch时,一般都是使用int和char,但其实枚举也可以用在switch中,而且可能使用枚举,可以让我们的代码的可读性更强。下面是枚举使用enum的例子

enum Color{  
   GREEN, YELLOW, RED  
}  
public class TrafficLight {  
   Color color = Color.RED;  
   public void change() {  
       switch (color) {  
       case RED:  
           System.out.println("红色");  
           break;  
       case YELLOW:  
           System.out.println("黄色");  
           break;  
       case GREEN:  
           System.out.println("绿色");  
           break;  
       }  
   }  
}  

3、向枚举中添加新方法 + 遍历

我们使用常量的时候,我们使用接口的时候是可以有值与之对应的,如上面IWeekConstants 接口的MON的值是Mon,但枚举好像没能标示出这种意义。下面我们就讨论该方式的实现和枚举类型的遍历

枚举类型提供了构造函数,我们可以通过构造函数和覆写toString方法来实现。实现代码如下:

package com.zcr.test;

enum ActionTypeEnum{
   //通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
   //赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
   下载(1,"xiazai"),访问(2,"fangwen");
   int index;
   String name;
   
   private ActionTypeEnum(int index,String name){
       this.index = index;
       this.name = name;
   }

   public int getIndex()
   {
       return index;
   }

   public void setIndex(int index)
   {
       this.index = index;
   }

   public String getName()
   {
       return name;
   }

   public void setName(String name)
   {
       this.name = name;
   }
   
   
}

public class EnumTest
{
   public static void main(String[] args)
   {
       ActionTypeEnum[] actionTypeEnums = ActionTypeEnum.values();
       for(ActionTypeEnum actionTypeEnum : actionTypeEnums){
           System.out.println("name=" + actionTypeEnum.getName());
           System.out.println("index= " + actionTypeEnum.getIndex());
           System.out.println("oridary=" + actionTypeEnum.ordinal());
           System.out.println("this = " + actionTypeEnum);
           System.out.println("下载值:"  + actionTypeEnum.valueOf("下载"));
           System.out.println("name()方法= " + actionTypeEnum.name());
           System.out.println("--------------叫我分割线------------------");
       }
   }
}

运行结果:

name=xiazai
index= 1
oridary=0
this = 下载
下载值:下载
name()方法= 下载
--------------叫我分割线------------------
name=fangwen
index= 2
oridary=1
this = 访问
下载值:下载
name()方法= 访问
--------------叫我分割线------------------

4、总结

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承),但可以继承接口。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/209144.html<

(0)
运维的头像运维
上一篇2025-04-09 08:14
下一篇 2025-04-09 08:15

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注