作者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)的更多相关文章

  1. java 数据类型:枚举类enum、对比方法compreTo()、获取名字.name()、获取对应值的枚举类Enum.valueOf()、包含构造方法和抽象方法的enum;实现接口;

    问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类 ...

  2. Atitit.实现继承的原理and方法java javascript .net c# php ...

    Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 ...

  3. paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.

    paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结. 各种语言总结比较,脚本php.python果然是方便.简短,实用. uapi : get_w ...

  4. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  5. atitit.为什么技术的选择方法java超过.net有前途

    atitit.为什么技术的选择方法java超过.net有前途 #----有没有法律依据不同的铜需求... 通常有开发效率,需要在稳定性.. 笔者 老哇爪 Attilax 艾龙,  EMAIL:1466 ...

  6. [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)

    [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP) 原文链接:https://www.cnblogs.com/blog5277/p/9334560.html 原 ...

  7. ref:一种新的攻击方法——Java Web表达式注入

    ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...

  8. 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇

    在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...

  9. 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇

    本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

随机推荐

  1. com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

    出现上述bug的原因如下: 在默认设置下,Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为. 禁止方式如下:在application.propertie ...

  2. C#6.0语言规范(十一) 结构

    结构与类类似,因为它们表示可以包含数据成员和函数成员的数据结构.但是,与类不同,结构是值类型,不需要堆分配.结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用,后者称为对象. 结构对于具 ...

  3. CSS3标签显示模式

    HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素.具体如下: 块级元素(block-level) 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度.高度.对齐等属性,常 ...

  4. Shell - 简明Shell入门13 - 用户输入(UserInput)

    示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...

  5. flaks___git

    今天呢  我给大家分享一个超实用的一个把代码分享到云端的一种操作 比如我们在家里,要想做项目的话可以直接从云端上拉取下来代码直接开始工作了 而且还可以随时修改,没有地点的局限性了,只要你想敲,随时随地 ...

  6. 多线程的实现及常用方法_DAY23

    1:多线程(理解) (1)如果一个应用程序有多条执行路径,则被称为多线程程序. 进程:正在执行的程序. 线程:程序的执行路径,执行单元. 单线程:如果一个应用程序只有一条执行路径,则被称为单线程程序. ...

  7. 二维数组与类的定义_DAY06

    1:二维数组(理解): (1)格式:   1:int[][] arr = new int[3][2];  2:int[][] arr = new int[3][];   3:int[][] arr = ...

  8. ORACLE数据库表解锁record is locked by another user

    出现此问题多由于操作Oracle执行完,没有COMMIT,直接把PL/SQL关闭掉,后来导致那张表被锁住,当编辑时就会出现这个信息,record is locked by another user! ...

  9. 分享.NET 轻量级的ORM

    ORM https://github.com/StackExchange/dapper-dot-net http://fluentdata.codeplex.com/ https://github.c ...

  10. JavaScript -- Document-Element

    -----046-Document-Element.html----- <!DOCTYPE html> <html> <head> <meta http-eq ...