Java 基础复习 -- Enum 类
一、枚举类基本语法
在 Java SE5 中添加了一个看似很小的特性,即 enum 关键字,它使得我们在需要群组并使用枚举类型集时,可以很方便的处理。
所有的 enum 都继承自 java.lang.Enum 类。由于 Java 不支持多重继承,所以 enum 不能再继承其他类。然而我们创建一个新的 enum 时,可以同时实现一个或多个接口。
创建一个简单的ColorEnum
public enum ColorEnum {
RED,YELLOW,BULE,GREED,BLACK;
}
调用的收直接在方法中使用 ColorEnum.RED 即可
ColorEnum red = ColorEnum.RED;
而且 Enum 有一个特别实用的特性,它可以在switch语句内使用:
ColorEnum red = ColorEnum.RED;
// 虽然一般情况下我们必须使用 enum 类型来修饰一个 enum 实例,但是在 case 语句中却不必如此。
switch (red) {
case RED:
System.out.println("this's red color");
break;
case BULE:
System.out.println("this's bule color");
break;
default:
System.out.println("this's other color");
}
由于 switch 是要在有限的可能值集合中进行选择,因此它和 enum 是绝佳的组合。一般来说,在 switch 中使用整数值,而枚举实例天生就是具备整数值的次序,并且可以通过 ordinal() 方法取得其次序(现在显然是编译器帮我们做了类似的工作),因此我们可以再 switch 语句中使用 enum。
自定义构造方法枚举类如何定义?
public enum RedisEnum {
ADD(1, "add"), DEL(2, "delete"), query(3, "query");
private Integer type;
private String name;
private RedisEnum(Integer type, String name) {
this.type = type;
this.name = name;
}
public Integer getType() {
return type;
}
public String getName() {
return name;
}
}
枚举类提供的 API
values(); 可以遍历 enum 实例。values()方法返回 enum 实例的数组,而且该数组中的元素严格保持其在 enum 中声明时的顺序,因此可以在循环中使用 values()返回的数组。
valueOf(String key);
ordinal();返回一个 int值,这个是每个 enum 实例在声明时的次序,从 0 开始。
getDeclaringClass();enum 实例上调用这个方法可以获取其所属的 num 类
name();返回 enum 实例声明时的名字,这与使用 toString 方法效果相同
toString();返回 enum 实例声明时的名字
equals(Object obj);enum 重写了 equals 和 hashcode
hashCode();enum 重写了 equals 和 hashcode
二、 使用枚举类型实现策略模式
简单举一个例子
public enum CalculationEnum {
/**
* 加法运算
*/
ADD{
@Override
public double exec(double num1, double num2) {
return num1 + num2;
}
},
/**
* 减法运算
*/
SUB{
@Override
public double exec(double num1, double num2) {
return num1 - num2;
}
};
public abstract double exec(double num1, double num2);
public static void main(String[] args) {
double addNum = CalculationEnum.ADD.exec(1, 2.2);
System.out.println(addNum);
double subNum = CalculationEnum.SUB.exec(3.2, 1.1);
System.out.println(subNum);
}
}
Java 基础复习 -- Enum 类的更多相关文章
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- 《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...
- Java基础复习之数组
Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...
- java基础复习记录
java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
随机推荐
- 【nodejs原理&源码赏析(1)】Express中间件系统的基本实现
一直觉得express的中间件系统这种流式处理非常形象,就好像加工流水线一样,每个环节都在针对同一个产品的不同部分完成自己的工作,最后得到一个成品.今天就来实现一个简易的[中间件队列]. 一. API ...
- 基于webpack实现多html页面开发框架一 准备工作
本系列主要介绍如何基于webpack实现多html页面开发框架,这里不讲webpack的基本概念,废话不多说,直奔主题! 前置条件: 1.安装node环境,自己去官网下载安装 2.新建文件夹webpa ...
- Linux-Ubuntu学习笔记
因学习Python需求,特开此贴用于记录Linux-Ubuntu操作系统的学习笔记. Linux命令-基础版 Linux命令-高级版 此贴终结了,主要用于开发过程中忘记命令时使用.
- eNSP 简介及基础操作
eNSP 一. eNSP简介 eNSP是一款由华为自主研发的.免费的.可扩展的.图形化操作的网络仿真工具平台,主要对企业网络路由器.交换机及相关物理设备进行软件仿真,支持大型网络模拟.界面如下: 界面 ...
- 为什么QQ能帮你找到失散多年的兄弟?----图论
编程三分钟的第 44 篇原创文章 为什么qq里"可能认识的人"功能推荐的如此精准? 为什么两个没有什么联系的朋友会相互认识? 一切的背后到底是道德的沦丧,还是人性的扭曲 ? 让我们 ...
- [TimLinux] docker CentOS7 入门——容器(1)
1. 编写Dockerfile # 将官方 Python 运行时用作父镜像 FROM python: # 将工作目录设置为 /app WORKDIR /app # 将当前目录内容复制到位于 /app ...
- Ceph 介绍及原理架构
- ARTS-S C语言多线程传参数
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h& ...
- THREE.js 笔记
1.加载3d模型,obj格式,方式一: 加载obj,自行指定material贴图:方式二: 同时加载obj和mtl,此时为了正确加载贴图,最好指定统一的baseUrl: 2.canvas.toData ...
- Spring与Shiro整合 加载权限表达式
Spring与Shiro整合 加载权限表达式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 如何加载权限表达式 我们在上章内容中画了一张图,里面有三个分项,用户 角色 权限: 那 ...