Java枚举类实现

article/2025/9/27 10:53:53

一、枚举类的特点

        1.类的对象只有有限个,且为静态常量

        2.当需要定义一组常量时,强烈建议使用枚举类

二、如何定义枚举类

        jdk1.5之前:自定义枚举类

        jdk1.5 :可以使用enum关键字来定义枚举类

2.1自定义枚举类实现: 

package enumtest;import org.junit.Test;public class SeasonTest {@Testpublic void test(){System.out.println(Season.SPRING.getSeasonName());}
}
class Season{//1.用private final修饰成员变量private final String seasonName;private final String seasonSec;//2.私有化构造器,并给对象属性赋值private Season(String seasonName,String seasonSec){this.seasonName=seasonName;this.seasonSec=seasonSec;}//创建当前枚举类的多个对象public static final Season SPRING=new Season("春天","春乱花开");public static final Season SUMMER=new Season("夏天","夏日炎炎");public static final Season AUTUMN=new Season("秋天","秋高气爽");public static final Season WINTER=new Season("冬天","冰天雪地");public String getSeasonName() {return seasonName;}public String getSeasonSec() {return seasonSec;}@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonSec='" + seasonSec + '\'' +'}';}
}

2.2 使用enum关键字创建枚举类

package enumtest;import org.junit.Test;public class SeasonTest1 {@Testpublic void test(){System.out.println(Season1.SPRING.getSeasonName());}
}
//使用enum关键字创建枚举类
//定义的枚举类默认继承Enum类
enum Season1{//1.提供当前枚举类的对象(必须在类的开头提供)SPRING("春天","春乱花开"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","秋高气爽"),WINTER("冬天","冰天雪地");//2.声明属性private final String seasonName;private final String seasonSec;private Season1(String seasonName,String seasonSec){this.seasonName=seasonName;this.seasonSec=seasonSec;}public String getSeasonName() {return seasonName;}public String getSeasonSec() {return seasonSec;}
}

结果:春天 

注意:

1.enum关键字简化了枚举类的定义,同样是在内部创建枚举类的对象,enum关键字的方式无需写private static final,new等关键字,注意这里写了反而会报错。

2.提供的枚举类对象必须在类的开头处提供。多个对象之间用逗号隔开,最后一个分号结尾

如果枚举类中没有声明属性,则默认会有一个String类型的属性并且值就是对象的名字。

3.enum定义的枚举类默认继承Enum类

4.枚举类中的构造方法只能是private

3.Enum的常用方法 

        1.toString():返回枚举类对象的名称

        2.values(); 获得所有枚举对象的数组

        3.valueOf(String objName); 根据枚举对象名得到指定的枚举对象(如果没有该对象会抛出异常)

注意:values() 和 valueOf(String objName)方法是编译器生成的方法,在Enum抽象类中找不到。

   @Testpublic void test2(){System.out.println(Season1.SPRING.toString());System.out.println(Season1.valueOf("SPRING"));System.out.println(Arrays.toString(Season1.values()));}

 结果:

4.使用enum关键字定义的枚举类实现接口

        两种方式:

        1.向普通类一样实现接口,重写接口中的方法,则,每个枚举类对象都能使用同一个重写方法

        2.每个枚举类对象单独实现接口的方法,则每个枚举类对象的重写方法可以不一样。

第一种方式: 

//在上面的文件中添加如下代码
//定义一个接口
interface Info{void show();
}
//在Season1类中重写该方法@Overridepublic void show() {System.out.println("枚举类实现的方法");}

 测试代码:

    @Testpublic void test3(){//每个对象调用的都是同一个重写方法Season1.SPRING.show();Season1.WINTER.show();}

 结果 :

 第二种方式:

将Season1类中的枚举类对象修改成如下:

SPRING("春天","春乱花开"){@Overridepublic void show() {System.out.println("春天的show");}},SUMMER("夏天","夏日炎炎"){@Overridepublic void show() {System.out.println("夏天的show");}},AUTUMN("秋天","秋高气爽"){@Overridepublic void show() {System.out.println("秋天的show");}},WINTER("冬天","冰天雪地"){@Overridepublic void show() {System.out.println("冬天的show");}};

测试:

    @Testpublic void test4(){//每个对象调用的是各自实现的接口方法Season1.SPRING.show();Season1.WINTER.show();}

结果:

补充:如果枚举类中实现了接口的方法,提供的枚举类对象也实现了相同的方法,则后者覆盖前者。 


http://chatgpt.dhexx.cn/article/wLf5Yuyj.shtml

相关文章

java枚举

为什么需要枚举? 一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,比如成绩Grade只能为ABCDE。此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。枚举…

Java枚举中定义属性

文章目录 1、复习枚举2、自定义属性3、自定义属性枚举类和常量的对比4、常用方法5、枚举自定义属性在开发中的应用:字典表6、补充:入参校验 刚接触枚举时的例子太简单,就一个Season枚举类,里面四个常量值,后来开发中看…

Java 枚举(Enum)使用

文章目录 枚举引入enum关键字实现枚举enum关键字实现枚举注意事项enum常用方法一览表enum课堂练习enum实现接口 枚举引入 创建Season类, 实例化春夏秋冬四个实例 Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, autumn, winter) 2.只读,不需要修…

Java枚举详解

目录 Java枚举详解 基本介绍 1.自定义类实现枚举 2.使用enum关键字实现枚举 使用enum关键字实现枚举的注意事项 enum的常用方法 enum的使用细节 Java枚举详解 基本介绍 枚举对应英文(enumeration,简写 enum) 枚举是一组常量的集合 枚举属于一种特殊的类,里…

Java枚举(enum)

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为…

如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性

关于pFuzz pFuzz是一款功能强大的Web应用程序防火墙安全检测/绕过工具,可以帮助广大研究人员同时通过多种方式绕过目标Web应用程序防火墙,以测试WAF的安全性。 pFuzz本质上是一款高级红队模糊测试工具,主要用于研究目的。pFuzz基于Python编…

jieba java_【NLP】【一】中文分词之jieba

声明:本文参考jieba官方文档而成,官方链接:https://github.com/fxsjy/jieba 【一】jieba安装 pip install jieba 【二】jieba简介 简介可见jieba官方说明:https://pypi.org/project/jieba/ 总而言之,jieba用于中文分词…

jieba 分词

一.介绍: jieba: “结巴”中文分词:做最好的 Python 中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module. 完整文档见 : GitHub: https://github.com…

jieba学习

Jieba jieba的安装主要功能1.主要有三种模式:2. 加载词典3.词性标注4.关键词提取5.Tokenize:返回词语在原文的起止位置 jieba的安装 先在 [http://pypi.python.org/pypi/jieba/]下载 ,解压后运行 python setup.py install 或者pin install j…

jieba 结巴分词详解

🔗 运行环境:python3🚩 作者:K同学啊🥇 精选专栏:《深度学习100例》🔥 推荐专栏:《新手入门深度学习》📚 极品专栏:《Matplotlib教程》📔 选自专栏…

NLP基本工具之jieba详解

jieba的作用只有分词吗? 简介 jieba(结巴)是百度工程师Sun Junyi开发的一个开源库,在GitHub上很受欢迎,使用频率也很高。 GitHub链接:https://github.com/fxsjy/jieba jieba最流行的应用是分词&#xff0…

jieba分词的最详细解读

目录 一,什么是jieba(结巴)库? 二,jieba库的使用规则 三,jieba库具体使用和实例 一,什么是jieba(结巴)库? 字如其名,结巴库主要用于中文分词&…

python中jieba库使用教程

jieba是python的一个中文分词库,下面介绍它的使用方法。 安装 方式1: pip install jieba方式2: 先下载 http://pypi.python.org/pypi/jieba/ 然后解压,运行 python setup.py install 功能 下面介绍下jieba的主要功能&#xff…

基于python中jieba包的详细使用介绍

一,jieba的介绍 jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性: 支持四种分词模式: 精确模式全模式搜索引擎模式paddle模式 支持繁体分词 支持自定义词典 MIT 授权协议 二,安装和使用 1&am…

CRC校验码的计算

循环冗余检验的原理: 在发送端,先把数据划分为组,假定每组k个比特,假定一个待传送的数据M(k位),CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去&…

CRC校验简单记录

先聊聊奇偶校验 所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是否和发送出的数据相同。校验得通信双方都有才行,接收方收到数据后进行计算得到一个校验值,与发送方发的校验值比较,如果…

CRC校验总结

事实上网上很多CRC校验算法,在接收端进行CRC校验时,余数不为零。这往往是因为CRC校验算法本身是有问题的,但不妨碍我们进行校验。接收端可以对需要校验的字段带入CRC校验算法,计算得到校验值,并与发送数据中的校验值进…

CRC校验码计算,以常用CRC-8为例

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验原理:在要发送的帧后面附加一个数,生成一个新帧发送给接收端。它要使所生成的新帧能与发送端和接收端共同…

CRC校验码举例

CRC校验码举例 一、首先复习一下异或运算(XOR),相同得0,相异得1. 二、多项式算数 使用多项式算数是为了是为了在进行二进制计算时无需考虑进位问题。 CRC中用到的除数正是由多项式的各项系数组成。 比如1,CRC除数为10111。 三、…

CRC校验查表法原理及实现(CRC-16)

绪论 在网上浏览了很多关于CRC校验的文章,基本上都是针对CRC校验原理的阐述以及关于CRC校验查表法的实际应用以及具体软件实现方法。 至于查的表是怎么来的,软件为什么要这样实现很多文章并没有说明。本篇文章就针对这两点问题进行总结和归纳&#xff0…