enum 的使用方法(java)
作者QQ:1095737364 QQ群:123300273 欢迎加入!
enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class
下面是一个简单的示例:
Color.java:自定义的枚举及其使用方法,根据情况可以进行增删!
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量:枚举RED("红色", 1)括号中的属性来定义
private String name;
private int index;
// 构造方法:传递所有的属性
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 1.通过编号得到名字
public static String getNameByIndex(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// 2.通过编号得到枚举
public static Color getColorByIndex(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c;
}
}
return null;
}
// 3.通过名字得到编号
public static int getIndexByName(String name) {
for (Color c : Color.values()) {
if (c.getName() == name) {
return c.index;
}
}
return -1;
}
// 通过名字得到枚举
public static Color getColorByName(String name) {
for (Color c : Color.values()) {
if (c.getName() == name) {
return c;
}
}
return null;
}
//得到枚举的名字
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//得到枚举的编号
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
// 覆盖方法:设置自定义枚举输出(一般不用)
// @Override
// public String toString() {
// return this.index + "_" + this.name;
// }
}
下面是一个测试用例:(自己import Java包)
EnumTest.java
public class EnumTest {
public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };//常量枚举(简单实用)
public static void main(String[] args) {
System.out.println(Size.SMALL);
System.out.println(Color.BLANK);
System.out.println(Color.getColorByIndex(1));
System.out.println(Color.getColorByName("白色"));
System.out.println(Color.getIndexByName("白色"));
System.out.println(Color.getNameByIndex(1));
// EnumSet的使用
EnumSet<Color> weekSet = EnumSet.allOf(Color.class);
for (Color color : weekSet) {
System.out.println(color);
}
// EnumMap的使用
EnumMap<Color, String> weekMap = new EnumMap(Color.class);
weekMap.put(Color.GREEN, "绿");
weekMap.put(Color.BLANK, "白");
for (Iterator<Map.Entry<Color, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry<Color, String> entry = iter.next();
System.out.println(entry.getKey().name() + ":" + entry.getValue());
}
}
}
谢谢打赏...
enum 的使用方法(java)的更多相关文章
- java 数据类型:枚举类enum、对比方法compreTo()、获取名字.name()、获取对应值的枚举类Enum.valueOf()、包含构造方法和抽象方法的enum;实现接口;
问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类 ...
- Atitit.实现继承的原理and方法java javascript .net c# php ...
Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 ...
- paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.
paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结. 各种语言总结比较,脚本php.python果然是方便.简短,实用. uapi : get_w ...
- 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...
- atitit.为什么技术的选择方法java超过.net有前途
atitit.为什么技术的选择方法java超过.net有前途 #----有没有法律依据不同的铜需求... 通常有开发效率,需要在稳定性.. 笔者 老哇爪 Attilax 艾龙, EMAIL:1466 ...
- [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)
[爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP) 原文链接:https://www.cnblogs.com/blog5277/p/9334560.html 原 ...
- ref:一种新的攻击方法——Java Web表达式注入
ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇
在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...
- 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
随机推荐
- InfluxDB概念和基本操作
InfluxDB基本概念 数据格式 在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value).格式如下: cpu_usage, ...
- 传输层两大协议:TCP和UDP
1. UDP 1.1 发送方式(如何发送) 面向无连接. 无状态服务. 不保证不丢失,不保证按顺序到达. 1.2 发送形式(发送的是什么) 基于数据报. 一个一个的发送,一个一个的接收. 1.3 使用 ...
- Centos6.7配置Nginx+Tomcat简单整合
系统环境:Centos 6.7 软件环境:JDK-1.8.0_65.Nginx-1.10.3.Tomcat-8.5.8 文档环境:/opt/app/ 存放软件目录,至于mkdir创建文件就不用再说了 ...
- 再谈C#委托与事件
之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...
- vim常用命令总结(转)
vim常用命令 -------------------------------------------------------------------------------------------- ...
- Vue源码翻译之组件初始化。
废话不多说. 我们先来看看Vue的入口文件. import { initMixin } from './init' import { stateMixin } from './state' impor ...
- 高可用Hadoop平台-启航
1.概述 在上篇博客中,我们搭建了<配置高可用Hadoop平台>,接下来我们就可以驾着Hadoop这艘巨轮在大数据的海洋中遨游了.工欲善其事,必先利其器.是的,没错:我们开发需要有开发工具 ...
- centos7.0安装docker-18.06.1-ce不能启动问题
最近用centos7.0 yum安装了一个docker-ce18.06.1 但是发现安装好不能启动,于是上官网看了一下,说是docker-ce18.06.1是从centos7.2开始支持的,但是7. ...
- centos7之使用最新版的kubeadm体验k8s1.12.0
1.环境准备 centos7 .docker-ce18.06.1-ce.kubeadm.kubelet.kubectl 2.安装 yum安装,准备repo文件 docker: [docker-ce-s ...
- 【转载】Java8 HashMap之tableSizeFor
Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大.之后将进行总结. 最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多.其中tab ...