枚举类型(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。

用法一:常量

  1. import java.util.Arrays;
  2.  
  3. /**
  4. * Created by N3verL4nd on 2016/11/21.
  5. */
  6.  
  7. enum Color{
  8. RED, GREEN, BLUE
  9. }
  10.  
  11. public class HelloWorld {
  12. public static void main(String[] args) {
  13. Color color = Color.valueOf("RED");
  14. System.out.println(color.toString());
  15.  
  16. Color[] arr = Color.values();
  17. System.out.println(Arrays.toString(arr));
  18. }
  19. }

用法二:switch

  1. import java.util.Arrays;
  2.  
  3. /**
  4. * Created by N3verL4nd on 2016/11/21.
  5. */
  6.  
  7. enum Color{
  8. RED, GREEN, BLUE
  9. }
  10.  
  11. public class HelloWorld {
  12. public static void main(String[] args) {
  13. Color color = Color.BLUE;
  14. switch (color){
  15. case RED:
  16. System.out.println("RED");
  17. break;
  18. case GREEN:
  19. System.out.println("GREEN");
  20. break;
  21. case BLUE:
  22. System.out.println("BLUE");
  23. break;
  24. default:
  25. break;
  26. }
  27. }
  28. }

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

  1. /**
  2. * Created by N3verL4nd on 2016/11/21.
  3. */
  4.  
  5. enum Color{
  6. RED("this is red"), GREEN("this is green"), BLUE("this is blue");
  7.  
  8. private String desc;
  9.  
  10. private Color(String desc){
  11. this.desc = desc;
  12. }
  13.  
  14. public String getDesc() {
  15. return desc;
  16. }
  17. }
  18.  
  19. public class HelloWorld {
  20. public static void main(String[] args) {
  21. Color red = Color.RED;
  22. System.out.println(red + ": " + red.getDesc());
  23. }
  24. }

用法四:覆盖枚举的方法

比如重写toString方法:
  1. /**
  2. * Created by N3verL4nd on 2016/11/21.
  3. */
  4.  
  5. enum Color{
  6. RED("this is red"), GREEN("this is green"), BLUE("this is blue");
  7.  
  8. private String desc;
  9.  
  10. private Color(String desc){
  11. this.desc = desc;
  12. }
  13.  
  14. public String getDesc() {
  15. return desc;
  16. }
  17.  
  18. @Override
  19. public String toString() {
  20. switch (this){
  21. case RED:
  22. return "Color.RED";
  23. case GREEN:
  24. return "Color.GREEN";
  25. case BLUE:
  26. return "Color.BLUE";
  27. default:
  28. return "";
  29. }
  30. }
  31. }
  32.  
  33. public class HelloWorld {
  34. public static void main(String[] args) {
  35. Color red = Color.RED;
  36. System.out.println(red.toString() + ": " + red.getDesc());
  37. }
  38. }

参考:
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. $Noip2010/Luogu1525$ 关押罪犯 贪心

    $Luogu$ $Sol$ 贪心.尽量把怨气值大的罪犯放到两个监狱,所以首先要按照怨气值从大到小排序.当扫描到两个罪犯已经被指定到同一个监狱时,就结束循环,这个怨气值就是答案.当然把怨气值大的两个罪犯 ...

  2. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  3. c语言中自定义bool类型模板

    首先,c语言中没有bool类型,只有c++中有,所以需要自定义,即c中表示bool类型的方法: 1.模板1 typedef int bool; #define false 0 #define true ...

  4. Clover软件使用中遇到的问题

    安装Clover应用后不生效,Win + E 时仍然默认打开系统的资源管理器 解决: 进入ie浏览器的管理加载项窗口,显示栏选择所有加载项 找到 Explorer Watcher Class 项,确保 ...

  5. 30.strftime参数

    附:strftime参数 strftime(format[, tuple]) -> string 将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出 python中时间 ...

  6. 6.python在windows下用批处理文件在运行中输入程序名直接运行的方法

    最近由于平时自由时间比较多,在看一本python入门书籍,在里面学习了一种用windows下的批处理文件在电脑运行界面中直接输入程序名称就可运行的方法,现将其详细说明如下: 1.首先编写一个教程上的程 ...

  7. Rust入坑指南:海纳百川

    今天来聊Rust中两个重要的概念:泛型和trait.很多编程语言都支持泛型,Rust也不例外,相信大家对泛型也都比较熟悉,它可以表示任意一种数据类型.trait同样不是Rust所特有的特性,它借鉴于H ...

  8. 区间 dp

    以一个经典题目引入到正题 : 有 n 堆石子 , 每两堆石子合并会花费一定的价值,所花费的价值即为 两堆石子上的价值和 , 问合并所有的石子后的最小花费 ? 思路分析 : 因为题干可以看成是对每个区间 ...

  9. Jetbrains CLion 安装及配置详解

    # Hi 今天呢就给大家推荐一个高大上 强大智能的 C/C++语言编辑器.ta的名字叫-- Jetbrains CLion (呃,说好了不用标题字呢) 这个编辑器呢主要支持C和C ++,包括现代C + ...

  10. webpack进阶用法你都get到了么?

    如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...