什么是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类中常量的值,那么需要改的时候,修改漏了,那可不是开玩笑的。

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

什么是java枚举_什么是java枚举相关推荐

  1. java 枚举_深入理解Java枚举

    所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...

  2. java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上

    首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...

  3. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

  4. java翻译程序_有没有java代码翻译软件?

    展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...

  5. java安装_在线学习Java编程的最佳方法

    java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...

  6. java注释_全面解析Java中的注解与注释

    注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...

  7. opencv java 摄像头_使用OpenCV Java创建Windows摄像头扫码程序

    OpenCV提供了一些基本的Webcam控制接口.用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用.然而使用Java,情况就复杂的多,因为OpenCV Java并没 ...

  8. java横线_知识点:java一些方法会有横线?以Date 过期方法为例

    原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...

  9. 本地生活JAVA版本_赶集生活java版

    赶集网java版客户端 特色介绍: * 丰富的特色功能:一键拨号.GPS定位.本地收藏.拍照发帖,比电脑还方便. * 全面的服务功能:房屋租售.二手买卖.火车票转让.家政.开锁等全方位服务. * 极致 ...

最新文章

  1. 【Linux】rpm常用命令及rpm参数介绍
  2. debian上安装docker ce
  3. html文档的文件头的主要作用是什么,文件头
  4. 线性结构常规操作(四)
  5. .netframewor划时代的系统:纪念Vista发布5周年
  6. web网页 页面布局的几种方式(转)
  7. IEnumerable 和 IEnumerator
  8. ES6 = 函数参数
  9. iOS13beta2版描述文件,修复了,修复了,修复了,可以用描述文件更新了
  10. 第1060期AI100_机器学习日报(2017-08-13)
  11. aws mysql rds_AWS 新建RDS实例 for MySQL
  12. C语言字母的组合,C语言求字母的全部组合
  13. 问道手游平民玩家什么职业好
  14. Android Studio挂载第三方模拟器
  15. OpenCV算法加速(2)使用SIMD指令集(MMX、SSE、AVX)和MIPP实现视觉算法优化
  16. html如何使mp4成为背景,如何让MP4 video视频背景色变成透明?
  17. python建站与java建站有何不同_Python与JAVA有何区别?
  18. 互联网医院在线问诊系统-医院远程问诊,守护您的健康
  19. java序列化的隐藏方法
  20. finereport 拷贝模板至服务器后报找不到数据连接

热门文章

  1. HugeGraphServer 部署安装
  2. 太平鸟上云 推动中国服饰行业新零售转型
  3. 58到家为2000万家庭提供上门生活服务的背后是云计算的高效支撑
  4. 6万人同时离场,竟然一点都不挤?原来用了这个神器
  5. 阿里开发者招聘节 | 面试题06-07: MySQL的数据如何恢复到任意时间点
  6. 黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%
  7. AI 如何推动双碳目标达成?施耐德电气这么说
  8. 手把手教你配置VS Code 远程开发工具,工作效率提升N倍
  9. Redis 学习之一招击穿自己的系统,附送 N 个击穿解决大礼包 | 原力计划
  10. 阿里云数字政府市场份额第一,同比增速102.57%