枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。

java中的Enum类型更像是一个特殊的class,它可以有自己的数据域和方法。

java中的Enum类型有如下特征:

1、他不能有public构造函数,用来保证其无法实例化。

2、所有的枚举类型是public static final

3、Enum重载了toString方法,因此我们如果调用Color.BLUE.toString()默认返回字符串”BLUE”.

4、Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用.valueOf(“BLUE”)将返回Color.BLUE.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

5、Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

6、Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

用法一:常量

import java.util.Arrays;

/**
* Created by N3verL4nd on 2016/11/21.
*/ enum Color{
RED, GREEN, BLUE
} public class HelloWorld {
public static void main(String[] args) {
Color color = Color.valueOf("RED");
System.out.println(color.toString()); Color[] arr = Color.values();
System.out.println(Arrays.toString(arr));
}
}

用法二:switch

import java.util.Arrays;

/**
* Created by N3verL4nd on 2016/11/21.
*/ enum Color{
RED, GREEN, BLUE
} public class HelloWorld {
public static void main(String[] args) {
Color color = Color.BLUE;
switch (color){
case RED:
System.out.println("RED");
break;
case GREEN:
System.out.println("GREEN");
break;
case BLUE:
System.out.println("BLUE");
break;
default:
break;
}
}
}

用法三:向枚举中添加新方法

/**
* Created by N3verL4nd on 2016/11/21.
*/ enum Color{
RED("this is red"), GREEN("this is green"), BLUE("this is blue"); private String desc; private Color(String desc){
this.desc = desc;
} public String getDesc() {
return desc;
}
} public class HelloWorld {
public static void main(String[] args) {
Color red = Color.RED;
System.out.println(red + ": " + red.getDesc());
}
}

用法四:覆盖枚举的方法

比如重写toString方法:
/**
* Created by N3verL4nd on 2016/11/21.
*/ enum Color{
RED("this is red"), GREEN("this is green"), BLUE("this is blue"); private String desc; private Color(String desc){
this.desc = desc;
} public String getDesc() {
return desc;
} @Override
public String toString() {
switch (this){
case RED:
return "Color.RED";
case GREEN:
return "Color.GREEN";
case BLUE:
return "Color.BLUE";
default:
return "";
}
}
} public class HelloWorld {
public static void main(String[] args) {
Color red = Color.RED;
System.out.println(red.toString() + ": " + red.getDesc());
}
}

参考:
http://blog.lichengwu.cn/java/2011/09/26/the-usage-of-enum-in-java/
http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html
https://www.ibm.com/developerworks/cn/java/j-lo-enum/

java枚举类的常见用法的更多相关文章

  1. Java 枚举7种常见用法

    (转)原创地址:http://blog.lichengwu.cn/java/2011/09/26/the-usage-of-enum-in-java/ JDK1.5引入了新的类型--枚举.在 Java ...

  2. JAVA中enum的常见用法

    JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...

  3. Java枚举类在生产环境中的使用方式

    前言   Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...

  4. Date类的常见用法——JavaSE基础

    Date类的常见用法 Date类属于java.util包 因此需要导入Date类 Date() 分配一个Date对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒). Date(long da ...

  5. Java枚举类使用

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  6. Java 枚举类详解

    1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...

  7. 夯实Java基础系列14:深入理解Java枚举类

    目录 初探枚举类 枚举类-语法 枚举类的具体使用 使用枚举类的注意事项 枚举类的实现原理 枚举类实战 实战一无参 实战二有一参 实战三有两参 枚举类总结 枚举 API 总结 参考文章 微信公众号 Ja ...

  8. Java枚举类与注解详解——一篇文章读懂枚举类与注解详

    目录 一.枚举类 ① 自定义枚举类 ② enum关键字定义枚举类 ③ enum 枚举类的方法 ④ enum 枚举类实现接口 二.注解 ① 生成文档相关注解 ②注解在编译时进行格式检查 ③注解跟踪代码的 ...

  9. Java 枚举类

    如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...

随机推荐

  1. Python 中 unittest 单元测试框架中需要知识点

    现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识 ...

  2. 机器学习之路--Matplotlib

    1.绘制折线图 在pandas里面有一种数据类型为datatime ,可以将不规范的日期改为:xxxx-xx-xx import pandas as pd import numpy as np a = ...

  3. vue开源Element UI表单设计及代码生成器

    在日常的开发工作中,表单开发是较为繁琐且重复的.本文介绍一个我自己写的,提高开发效率的小工具. 1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代 ...

  4. java高并发梳理

  5. java反射-- Field 用法实践

    java 反射是一种常用的技术手段, 通过加载类的字节码的方式来获取相关类的一些信息 比如成员变量, 成员方法等. Field 是什么呢? field 是一个类, 位于java.lang.reflec ...

  6. 0182 JavaScript执行机制:单线程,同步任务和异步任务,执行栈,消息队列,事件循环

    以下代码执行的结果是什么? [结果是1 2 3 ] console.log(1); setTimeout(function () { console.log(3); }, 1000); console ...

  7. Scala实践10

    1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个c ...

  8. cf - 920 c 求能否实现交换

    C. Swap Adjacent Elements time limit per test 1 second memory limit per test 256 megabytes input sta ...

  9. C入门题目

    37. 反转一个3位整数 反转一个只有3位数的整数. 样例 样例 1: 输入: number = 123 输出: 321 样例 2: 输入: number = 900 输出: 9 注意事项 你可以假设 ...

  10. 「 深入浅出 」集合List

    第一篇文章 「 深入浅出 」java集合Collection和Map 主要讲了对集合的整体介绍,本篇文章主要讲List相对于Collection新增的一些重要功能以及其重要子类ArrayList.Li ...