枚举(Enum)
enum是一个全新的“类”。
枚举(Enum): 我们所定义的每个枚举类型都继承自java.lang.Enum类。枚举中的每个成员都是public static final的。
当您使用“enum”定义枚举类型时,实质上您定义出来的类型继承自java.lang.Enum类型,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),他们都被预设为final,所有您无法改变他们,他们也是static成员,所以您可以通过类型名称直接使用他们,当然最重要的,他们都是公开的(public)
换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间已经完全确定下来了。
1、定义一个枚举
public enum Color {
Red,White,Blue
}
使用枚举
public class ColorTest {
public static void main(String[] args) {
Color myColor = Color.White;
System.out.println(myColor);
}
}
2、定义一个有成员变量的枚举
public class EnumTest {
public static void doOp(OpConstant opConstant){
switch (opConstant) {
case TRUN_LEFT:
System.out.println("向左转");
break;
case TRUN_RIGHT:
System.out.println("向右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
public static void main(String[] args) {
doOp(OpConstant.SHOOT);
}
}
enum OpConstant{
TRUN_LEFT, TRUN_RIGHT, SHOOT
}
定义枚举类型时本质上就是定义一个类别,只不过很多细节编译器帮您完成了。所有在某些程度上,enum关键字的作用就像是class或interface。
3、EnumSet的使用
enum AddressConst{
BEIJING,
SHANGHAI,
HANGZHOU
}
public class EnumSetDemo {
public static void showEnumSet(EnumSet<AddressConst> enumSet){
for(Iterator<AddressConst> iter = enumSet.iterator(); iter.hasNext();){
System.out.println(iter.next());
}
}
public static void main(String[] args) {
EnumSet<AddressConst> enumSet = EnumSet.of(AddressConst.BEIJING, AddressConst.SHANGHAI);
showEnumSet(enumSet);
System.out.println("-------");
//出去enumSet的enum实例
showEnumSet(EnumSet.complementOf(enumSet));
}
}
EnumSet.noneOf 方法的使用
public class EnumSetDemo2 {
public static void showEnumSet(EnumSet<AddressConst> enumSet){
for(Iterator<AddressConst> iter = enumSet.iterator(); iter.hasNext();){
System.out.println(iter.next());
}
}
public static void main(String[] args) {
EnumSet<AddressConst> enumSet = EnumSet.noneOf(AddressConst.class);
enumSet.add(AddressConst.BEIJING);
enumSet.add(AddressConst.HANGZHOU);
showEnumSet(enumSet);
}
}
4.EnumMap使用
public class EnumMapDemo {
public static void main(String[] args) {
Map<Action, String> map = new EnumMap<Action, String>(Action.class);
map.put(Action.PASUE, "暂停");
map.put(Action.STOP, "停止");
map.put(Action.START, "开始");
for(Action action : Action.values()){
System.out.println(map.get(action));
}
}
}
枚举(Enum)的更多相关文章
- MySQL字段之集合(set)枚举(enum)
MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it 分类:MySQL 集合 SET mysql> create table jihe(f1 ...
- 枚举 enum
typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...
- 枚举enum学习小记
参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- Python 枚举 enum
Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...
- 【转】结构struct 联合Union和枚举Enum的细节讨论
结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...
- 枚举Enum和常量0之间的恩怨
1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...
- C++和Java中枚举enum的用法
在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...
- 【转】枚举enum学习小记
原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...
- 枚举类型与位域枚举Enum
一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...
随机推荐
- Javascript诞生记 [转载]
1. "1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览,不具备与访问者互动 ...
- vim小结
1.工作模式 命令模式 编辑模式 一般模式 2.配置文件 :set nu / :set nonu 显示与取消行号 :syntax on / :syntax off 是否依据语法显示相关的颜色帮 ...
- 网卡启动安装dell服务器OS
参照视频 需要将boot改成bois启动 https://www.dell.com/support/contents/cn/zh/cndhs1/videos/videoPlayer/k1ajZzdjo ...
- python爬有道翻译
在有道翻译页面中打开开发者工具,在Headers板块找到Request URL以及相应的data. import urllib.request import urllib.parse import j ...
- 手写Java的字符串简单匹配方法IndexOf()
简单的字符串模式匹配算法,可使用KMP进行优化 /** * @param s1 母串 * @param s2 子串 * @return */ public static int myIndexOf(S ...
- 人脸识别调用返回http
https://ai.baidu.com/docs#/Face-Detect-V3/top
- ArcMap 制图出图
在这里用的数据是:台湾2018年6月人口统计数据来做展示数据. ArcMap 里面主要用到的是:符号系统使用.布局视图等 一.属性中设置元素符号 ArcMap 初次加载数据,默认的是“单一符号”,就是 ...
- 实现多层DIV叠加的js事件穿透
前几天做的一个功能:在地图上加载标注,这个标注是列表,就直接放的 DIV. 后来发现,当鼠标在这个标注上面的时候,滚动鼠标滚轮,地图的缩放功能失效. 想了下,应该是最上面的标注 DIV 拦截了滚轮滚动 ...
- destoon二次开发-用户名、邮箱、手机账号中间字符串以*隐藏 扩展
因为dt里面有用户名.邮箱.手机账号等,所以想办法进行隐藏保护用户隐私,所以个人就试着写了这个代码. 在api/extend.func.php文件下增加以下代码: //用户名.邮箱.手机账号中间字符串 ...
- 2019-2020-1 20199301《Linux内核原理与分析》第四周作业
Week4 MenuOS的构造 一.上周复习 计算机的三大法宝: 存储程序计算机: 函数调用堆栈: 中断. 操作系统的两把宝剑: 中断上下文-保存现场和恢复现场 进程上下文 二.Linux内核源代码简 ...