mzy对于枚举的理解
关于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");
@Override
public 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);
}
}
}
mzy对于枚举的理解的更多相关文章
- Java枚举类型理解
Enum格式理解 Enum的格式可以看做跟class关键字一样 class的定义格式如下: public class abc{ } enum的定义格式如下: Public enum abc { } 引 ...
- C#编程利器之二:结构与枚举(Structure and enumeration)【转】
C#编程利器之二:结构与枚举(Structure and enumeration) 在上一篇文章中,介绍了类如何封装程序中的对象.而实际中,出了类可以封装对象外,结构和枚举也可以封装一些对象,本文将着 ...
- USB描述符解析-->枚举.
枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源.一般都是使用中断传输方式通信. 常用的描述符有以下几种:01H.设备描述符 02H ...
- USB学习小记-HID类键盘的报告描述符的理解
前言 断断续续的学习了将近三个月,才把USB的HID类搞明白,速度真是够慢的.利用晚上+周末的时间学习自己的东西确实是必要的,不过效率是有点低,以后要更专注一些才行,希望自己能做到吧. 在学习过程中, ...
- iOS枚举的运用
1.什么是枚举? 枚举其实就是一个整型常数的集合,最简单的例子就是表示星期的SUN, MON, TUE, WED, THU, FRI,SAT, 就是一个枚举. 2.iOS中枚举的使用 在ObjC中可以 ...
- 【Java提高】---枚举的应用
枚举 一.枚举和静态常量区别 讲到枚举我们首先思考,它和public static final String 修饰的常量有什么不同. 我举枚举的两个优点: 1. 保证了 ...
- Java开发知识之Java的枚举
Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...
- 浅谈 Java 中的枚举
枚举也就是一一列举,常用来表示那些可以明确范围的集合,比方说性别,季节,星期,月份等. 在 JDK 1.5 才出现枚举类,在没有出现枚举类之前,我们要表示几个确定的值通常会使用常量来表示,形如 pub ...
- JDK源码学习笔记——Enum枚举使用及原理
一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...
随机推荐
- springboot-4-CRUD开发实战
流程: 创建项目,勾选基本的几个开发工具还有webstarter 再创建包(service,control,config,dao,pojo) 再前往https://www.webjars.org/,选 ...
- P4778 Counting Swaps 题解
第一道 A 掉的严格意义上的组合计数题,特来纪念一发. 第一次真正接触到这种类型的题,给人感觉好像思维得很发散才行-- 对于一个排列 \(p_1,p_2,\dots,p_n\),对于每个 \(i\) ...
- pytest框架
1.添加日志 import logging logging.debug('This is debug message') logging.info('This is info message') lo ...
- Skywalking-04:扩展Metric监控信息
扩展 Metric 监控信息 官方文档 Source and Scope extension for new metrics 案例:JVM Thread 增加 Metrics 修改 Thread 的定 ...
- 【阅读笔记】Java核心技术卷一 #2.Chapter4
4 对象和类 4.1 面向对象程序设计概述(略) 4.2 使用预定义类 java.time.LocalDate static LocalDate now(); static LocalDate of( ...
- open jdk 绿色版 下载
https://adoptopenjdk.net/ 是 rethat 的 openjdk 地址, jdk 11 , 进入页面后搜索 : jdk_x64_windo , 下载 zip 绿色版的那个. h ...
- 🔥 LeetCode 热题 HOT 100(41-50)
102. 二叉树的层序遍历 思路:使用队列. /** * Definition for a binary tree node. * public class TreeNode { * int val; ...
- 🔥 LeetCode 热题 HOT 100(21-30)
46. 全排列 思路:典型回溯法 class Solution { public List<List<Integer>> permute(int[] nums) { Linke ...
- SimpleDateFormat类的线程安全问题和解决方案
摘要:我们就一起看下在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题. 本文分享自华为云社区<SimpleDateForm ...
- linux虚拟机环境快速搭建redis5.x版本的主从集群总结
文/朱季谦 我在阿里云服务器上曾参与过公司redis集群的搭建,但时间久了,都快忘记当时的搭建过程了,故而决定在虚拟机centOS 7的环境,自行搭建一套redis5.x版本的集群,该版本集群的搭建比 ...