关于enum,其实就是简化了的class,功能就是提供一个个独立的、特定含义的常量!

在JDK5.0之前我们想模拟enum的功能,只能使用自定义类的形式:

1.首先私有化构造方法,让外部不能new对象。

2.在类内部new多个final的成员变量,让每个成员变量代表特殊含义(可以私有一个带参数的构造方法,提供一个私有属性,对外提供一个get方法)。

如下:

class Score {private String s;private Score(String s) {this.s = s;} // 私有化构造方法,不能让用户随意构造对象,固定了四个等级public String getS() {return s;}public static final Score A = new Score("100-90"); public static final Score B = new Score("89-80");public static final Score C = new Score("79-70");public static final Score D = new Score("69-60");public static final Score E = new Score("59-0");@Overridepublic String toString() {return "" + s + "";}}

在JDK5.0之后,enum的的出现,更加的灵活:

这里的A、B、C... 对应上面理解就比较容易了!

enum Score {A("100-90"), B("89-80"), C("79-70"), D("69-60"), E("59-0");private String s; // 分数段private Score(String s) {this.s = s;}public String getS() {return s;}// enum不能重写toString
}

同时,enum提供一个values方法,可以同时获得所有的属性!

package b_enum;
/*** 发现一个有意思的事情,在所有花括号后面加分号都不会报错!* 发现其实是可以加分号的,但是我们习惯省略了,因为花括号就已经是一个整体;* 是一段独立的内容了!* 所以一般我们省略分号,并不会这样去写:main() {}; class Test{};* @author mzy*/
public class Demo01 {/**  打印成绩:要求成绩等级 A B C D E*  只能是这个范围内的,不能有这五个等级之外的字母*  JDK5之前我们只能通过自定义类的形式:私有化构造来实现*/public static void main(String[] args) {// System.out.println(Score.A.getS());// System.out.println(Score.B.getS());Score[] values = Score.values();for(Score score : values) {System.out.println(score);}}
}

转载于:https://www.cnblogs.com/mzywucai/p/11053410.html

mzy对于枚举的理解相关推荐

  1. Java枚举深入理解以及HttpStatus类的使用

    1枚举 1.1枚举基础 由于每个程序员在开始编程时一般会首先学习C/C++,然后再学习Java,在C++中枚举是可以定义枚举值为特定的整数的,但这在Java中却没有得到支持,大概C/C++中的枚举代表 ...

  2. 深入理解java枚举_深入学习java枚举的应用

    一.枚举和静态常量区别 讲到枚举我们首先思考,它和public static final String 修饰的常量有什么不同. 我举枚举的两个优点: 1. 保证了类型安全:调用者无法随意传一个 int ...

  3. 枚举类型的理解和应用

    相信学习java的人,在平时开发时是很少用到枚举.说实在的,本人对枚举类型一向都是云里雾里,直到最近在看android源码时,才微探到其中的妙处. 接下来就以一个例子结合枚举和手势知识点的应用开发来讲 ...

  4. Java 枚举:实现接口

    http://blog.csdn.net/veryitman/article/details/7945949 所有的枚举类都继承自 Enum,因为 Java 不支持多继承,所以枚举无法继承其它类. 但 ...

  5. 【CodeForces - 670D1 】Magic Powder - 1 (模拟 或 枚举 或二分优化)

    题干: This problem is given in two versions that differ only by constraints. If you can solve this pro ...

  6. JDK源码学习笔记——Enum枚举使用及原理

    一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...

  7. 浅谈 Java 中的枚举

    枚举也就是一一列举,常用来表示那些可以明确范围的集合,比方说性别,季节,星期,月份等. 在 JDK 1.5 才出现枚举类,在没有出现枚举类之前,我们要表示几个确定的值通常会使用常量来表示,形如 pub ...

  8. const枚举 ts_TS -- 枚举类型

    [TOC] >[success] # 枚举类型 ~~~ 1.对基础类型中的枚举类型使用扩展 ~~~ >[danger] ##### 为什么有枚举 ~~~ 1.正常一般我们对性别在数据库存储 ...

  9. c语言枚举类型enum用法及应用

    大家好,我是无际. 今天跟大家讲一下我在产品开发时,用枚举(enum)的一些骚操作. 我跟你保证,今天的内容绝对是你在书本和视频学不到的. 为什么要讲枚举呢? 因为我发现它是一个容易被遗忘,同时又非常 ...

  10. Java - 枚举类型enum用法

    目录 一.枚举的理解(概念) 二.早期实现方式 三.枚举类型的定义 四. 枚举类的要求和特点 五. 枚举类型常用方法 一.枚举的理解(概念)

最新文章

  1. java字符存储,在什么编码是Java字符存储在?
  2. 性能测试之操作系统计数器分析方法
  3. 怎么用python画简单的图-Python | 用matplotlib画些简单的图
  4. 图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
  5. vscode 一些基本知识
  6. thymeleaf 中文文档
  7. IPhone开发 用子类搞定不同的设备(iphone和ipad)
  8. Spring 3.1和JPA的持久层
  9. Oracle_忘记密码
  10. 2020年最受关注的前100 家互联网公司
  11. CentOS系统是什么
  12. html校验邮箱格式,邮箱格式验证 方法总结
  13. python-RFM模型
  14. Solution of ZOJ 2748 Free Kick
  15. URP SMAA 细品
  16. 香港常见问题扫盲贴(港币兑换/签注直飞/刷卡/酒店押金/关税/香港上网)
  17. 如何在Apache-Maven官网下载到自己想要的版本
  18. 深入浅出Java反射原理和使用场景
  19. Java并发编程总结
  20. VUE使用vue-tree-color组件实现组织架构图(递归数据,简单明了)

热门文章

  1. 百度高德经纬度-离线一键批量纠偏工具
  2. 丝滑流畅的手写签名 PC适配版
  3. 中国万网CEO张向东解读被阿里收购幕后
  4. java判断闰年中闰月_农历中闰年闰月的算法
  5. 滴答乐园一直显示连接服务器,滴答乐园iOS版-滴答乐园快手互粉2020苹果iOS版预约 v1.0-优盘手机站...
  6. 服务器linux杀网页木马,一次Linux服务器木马查杀经历
  7. 用Java实现美女选妃
  8. bat的使用技巧汇总
  9. 台式计算机联网,【实现台式电脑无线上网的2种方法】
  10. 用css hack解决IE5 IE5.5 IE6 Firefox浏览器兼容性