什么是java枚举_什么是java枚举
什么是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枚举相关推荐
- java 枚举_深入理解Java枚举
所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...
- java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上
首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...
- groovy 使用java类_深入学习java中的Groovy 和 Scala 类
前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...
- java翻译程序_有没有java代码翻译软件?
展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...
- java安装_在线学习Java编程的最佳方法
java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...
- java注释_全面解析Java中的注解与注释
注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...
- opencv java 摄像头_使用OpenCV Java创建Windows摄像头扫码程序
OpenCV提供了一些基本的Webcam控制接口.用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用.然而使用Java,情况就复杂的多,因为OpenCV Java并没 ...
- java横线_知识点:java一些方法会有横线?以Date 过期方法为例
原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...
- 本地生活JAVA版本_赶集生活java版
赶集网java版客户端 特色介绍: * 丰富的特色功能:一键拨号.GPS定位.本地收藏.拍照发帖,比电脑还方便. * 全面的服务功能:房屋租售.二手买卖.火车票转让.家政.开锁等全方位服务. * 极致 ...
最新文章
- 【Linux】rpm常用命令及rpm参数介绍
- debian上安装docker ce
- html文档的文件头的主要作用是什么,文件头
- 线性结构常规操作(四)
- .netframewor划时代的系统:纪念Vista发布5周年
- web网页 页面布局的几种方式(转)
- IEnumerable 和 IEnumerator
- ES6 = 函数参数
- iOS13beta2版描述文件,修复了,修复了,修复了,可以用描述文件更新了
- 第1060期AI100_机器学习日报(2017-08-13)
- aws mysql rds_AWS 新建RDS实例 for MySQL
- C语言字母的组合,C语言求字母的全部组合
- 问道手游平民玩家什么职业好
- Android Studio挂载第三方模拟器
- OpenCV算法加速(2)使用SIMD指令集(MMX、SSE、AVX)和MIPP实现视觉算法优化
- html如何使mp4成为背景,如何让MP4 video视频背景色变成透明?
- python建站与java建站有何不同_Python与JAVA有何区别?
- 互联网医院在线问诊系统-医院远程问诊,守护您的健康
- java序列化的隐藏方法
- finereport 拷贝模板至服务器后报找不到数据连接
热门文章
- HugeGraphServer 部署安装
- 太平鸟上云 推动中国服饰行业新零售转型
- 58到家为2000万家庭提供上门生活服务的背后是云计算的高效支撑
- 6万人同时离场,竟然一点都不挤?原来用了这个神器
- 阿里开发者招聘节 | 面试题06-07: MySQL的数据如何恢复到任意时间点
- 黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%
- AI 如何推动双碳目标达成?施耐德电气这么说
- 手把手教你配置VS Code 远程开发工具,工作效率提升N倍
- Redis 学习之一招击穿自己的系统,附送 N 个击穿解决大礼包 | 原力计划
- 阿里云数字政府市场份额第一,同比增速102.57%