什么是java枚举_什么是java枚举

e6250eb23bdb5efc4daf2860b946b4d9.png

什么是java枚举?

java 枚举的定义与用法

一、枚举的定义:

枚举是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁,安全性以及便捷性。创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类)。枚举类型符合通用模式Class Enum>,而E表示枚举类型的名称。枚举类型的每一个值都映射到protected Enum(String name,int ordinal)构造函数中,在这里,每个值的名称都转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

二、枚举的使用:

创建一个枚举类:EnumTestpublic enum EnumTest {

//星期一,星期二,星期三,星期四,星期五,星期六

MON(1), TUE(2),WED(3),THU(4),FRI(5),SAT(6){

public boolean isRest(){

return true;

}

},

//星期日

SUN(0){

public boolean isRest(){

return true;

}

};

private int value;

private EnumTest(int value){

this.value=value;

}

public int getValue(){

return value;

}

public boolean isRest(){

return false;

}

}

使用EnumTest枚举类:public class EnumMain {

public static void main(String[] args) {

for (EnumTest enumTest : EnumTest.values()) {

System.out.println(enumTest + ":" + enumTest.getValue());

}

System.out.println("---------------我是分割线------------");

EnumTest test = EnumTest.SAT;

switch (test) {

case MON:

System.out.println("今天是星期一");

break;

case TUE:

System.out.println("今天是星期二");

break;

case WED:

System.out.println("今天是星期三");

break;

case THU:

System.out.println("今天是星期四");

break;

case FRI:

System.out.println("今天是星期五");

break;

case SAT:

System.out.println("今天是星期六");

break;

case SUN:

System.out.println("今天是星期日");

break;

default:

System.out.println(test);

break;

}

}

}

结果:MON:1

TUE:2

WED:3

THU:4

FRI:5

SAT:6

SUN:0

---------------我是分割线------------

今天是星期六

三、枚举优缺点:

在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。例如:

public class Entity {

public static final int VIDEO = 1;//视频

public static final int AUDIO = 2;//音频

public static final int TEXT = 3;//文字

public static final int IMAGE = 4;//图片

private int id;

private int type;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getType() {

return type;

}

public void setType(int type) {

this.type = type;

}

四、使用这个常量的方法的缺点:

1、代码可读性差,易用性差,由于setType()方法的参数是int型的,

2、类型不安全。在用户去调用的时候,必须保证类型完全一致,同时取值范围也要正确。像setType(-1);是合法的,但是不是合理的,今后会为程序带来种种问题。

3、耦合性高,扩展性差。假如,因为某些原因,需要修改Entity类中常量的值,那么需要改的时候,修改漏了,那可不是开玩笑的。

枚举就是为了这样的问题而诞生的。它们给出了将一个任意项同另一项比较的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于阿里云Serverless架构下函数计算的最新应用场景详解(一)

摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些…

浪潮云完成6亿元B轮融资,正推进上市;VMware收购AI初创公司Bitfusion;小爱同学App在苹果应用商店下架……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 华为Mate30 Lite贴膜曝光&am…

NB企业级微服务框架

网站首页: https://nutzam.com/index.html Java开源企业级快速开发框架、后台管理系统,拥有完善的权限控制、代码生成器、自定义表单、动态数据库、灵活的工作流、手机APP客户端、支持前后端分离开发。 https://github.com/threefish/nutzfw NutzBoot&…

基于阿里云Serverless架构下函数计算的最新应用场景详解(二)

摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些…

java提高代码效率_提高java代码运行效率

1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面第一,控制资源的使用,通过线程同步…

增长黑客系列:今天比昨天增长多少?快使用环比函数来分析日志

摘要: 增长黑客系列:今天比昨天增长多少?快使用环比函数来分析日志 在我们平时分析业务时,一个最重要的指标就是,今天比昨天增长多少,本周比上周增长多少;或者同上一个周期相比增长最大的分类是…

flowable连线名称不显示bug修复说明

文章目录flowable连线不显示bug修复说明flowable连线不显示bug修复说明 在flowable6.4版本(分享牛老师)修复了流程图中连线不显示的bug。由于Flowable官方对于这个bug的缘由很清楚,所以很顺利的将该bug修复代码合并到官方代码了,…

云计算将会让数据中心消失?

戳蓝字“CSDN云计算”关注我们哦!作者 | 王洪鹏出品 | CSDN云计算(ID:CSDNcould)近年来企业应用云化明显,越来越多的企业开始将自己的公司业务转移到云平台之上,可能是迁到公有云,也可能是私有云…

巧用 Img / JavaScript 采集页面数据

摘要: 当我们有一个新内容时(例如新功能、新活动、新游戏、新文章),作为运营人员总是迫不及待地希望能尽快传达到用户,因为这是获取用户的第一步、也是最重要的一步。 点此查看原文:http://click.aliyun.com/m/40929/…

mysql绕过waf_SQL注入中的WAF绕过技术

1.大小写绕过这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等绕过。2.简单编码绕过比如WAF检测关键字,那么我们让他检测不到就可以了。比如检测union,那么我们就用%55也就是U的…

时间序列数据的存储和计算 - 开源时序数据库解析

摘要: Prometheus 开源时序数据库解析的系列文章在之前已经完成了几篇,对比分析了Hbase系的OpenTSDB、Cassandra系的KairosDB、BlueFlood及Heroic,最后是tsdb ranking top 1的InfluxDB。 点此查看原文:http://click.aliyun.com/m/…

flowable modler为任务节点增加自定义属性

如何在modler设计器中为任务节点,添加自定义的属性。 文章目录1、modler设计器中所有元素的定义2、flowable如何处理stencilset_bpmn.json文件3、为UserTask任务节点添加一个扩展属性3.1. 添加属性的名称3.2. 为任务节点添加扩展属性3.3. 查看效果1、modler设计器中…

微软对OpenAI投资10亿美元欲开发AI技术;华晨宝马宣布建成全球首个5G汽车生产基地;传苹果将收购英特尔调制解调器芯片业务...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 索尼Xperia 1R信息曝光&…

java se 与j2se_javaSE和 j2SE的区别?

javaSE和 j2SE的区别?关注:71 答案:4 mip版解决时间 2021-01-28 18:29提问者耍硪ミ倪配么2021-01-27 20:19javaSE和 j2SE的区别?最佳答案二级知识专家自然卷的气质2021-01-27 21:53JavaEE 比 se多了许多包,用于开发大规模的,分布式的Java应用/服务器…

[高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球

摘要: 经常有用户问,我在上海有个IDC,在北京有个VPC,我想通过专线把IDC和VPC连接起来,我是不是要找运营商直接拉一根上海到北京的专线?其实不是这样的,用户只需要接入到最近的接入点即可。高速通…

Flowable决策任务(decision task)

摘要:Flowable中引入了一个decision task(我们可以将其称之为决策任务)。在讲解decision task之前,我们不妨看一下dmn引擎。因为如果大家不了解dmn,那肯定不知道如何使用decision task了。 dmn是decision Modeling Not…

PyODPS 安装常见问题解决

摘要: 本文将用户安装 PyODPS 时遇到的常见问题列举如下,希望在遇到类似问题时可供借鉴。在参考下列步骤之前,请首先尝试卸载并重装 PyODPS。卸载的步骤为执行“pip uninstall pyodps”。 点此查看原文:http://click.aliyun.com/m…

flowable理论(一)工作流理论

文章目录一、工作流是什么?二、为什么要用工作流?三、市面上有哪些工作流:四、工作流的规范一、工作流是什么? 工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可…

5G精华问答 | 5G技术已经成熟了吗?

1G时我们用手机打电话,2G时我们能互发短信、看文字信息,3G时上网看图片,而4G时我们看视频和直播,从1G到4G,不仅信号越来越好,安全性越来越高,上网也越来越快了。1Q:5G技术已经成熟了…

python局部变量含义_Python的变量

1. 概念Python变量是用于存储值所在的内存位置。换句话说,python程序中的变量将数据提供给计算机进行处理。Python中的每个值都有一个数据类型。Python中不同的数据类型是Number,List,Tuple,String,Dictionary等。变量…