一.Enum枚举的作用

1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象;

Eg:

  Public enum Color{RED, GREEN,BULE;}

说明:RED实际上就表示的是枚举的名称,默认的编号是0,可以使用ordinal()方法获得。

2.使用enum关键字定义枚举类,其中包含的对象可以初始化定义(初始化构造函数)

Eg:

package cn.test.java.enums;
enum ColorDemo{RED("红色"),GREEN("绿色"),BLUE("蓝色");private String name;private ColorDemo(String name){this.setName(name);}public void setName(String name){this.name = name;}public String getName(){return this.name;}
}
public class ConstructorEnum {public static void main(String[] args) {for(ColorDemo c : ColorDemo.values()){System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");}}
}

说明:在枚举类中定义属性及自己的构造方法,但是一旦定义有参数构造之后,在声明枚举对象的时候,就必须明确的调用构造方法,并进行传递参数。

3.在枚举中实际上已经实现好Comparable接口,所以枚举中的内容是可以排序的;

Eg:

package cn.test.java.enums;
enum ColorDemo{RED("红色"),GREEN("绿色"),BLUE("蓝色");private String name;private ColorDemo(String name){this.setName(name);}public void setName(String name){this.name = name;}public String getName(){return this.name;}
}
public class ConstructorEnum {public static void main(String[] args) {for(ColorDemo c : ColorDemo.values()){System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");}}
}

二.EnumMap 和EnumSet的使用

EnumMap是Map类的子类,所以它的所有方法都是从Map类中继承过来的,使用方法如下

Eg:

package cn.test.java.enums;
import java.util.EnumMap;
import java.util.Map;public class EunmMapDemo {public static void main(String[] args) {Map<Color,String> desc = null;desc = new EnumMap<Color,String>(Color.class);desc.put(Color.blus,"蓝色");desc.put(Color.green,"绿色");desc.put(Color.red,"红色");System.out.println("===输出全部内容");for(Color c : Color.values()){System.out.println(c.name()+"--->"+desc.get(c));}System.out.println("===输出全部键");for(Color c: desc.keySet()){System.out.println(c.name()+"、");}System.out.println();System.out.println("=== 输出全部值");for(String s:desc.values()){System.out.println(s+"、");}}
}

EnumSet类是Set类中的子类,它使用方法中都是以静态形式继续该类方法

Eg:

package cn.test.java.enums;
import java.util.EnumSet;
public class EunmSetDemo {public static void main(String args[]){EnumSet<Color> es = null ;            // 声明一个EnumSet对象System.out.println("===EnumSet.allOf(Color.class) =====") ;es = EnumSet.allOf(Color.class) ;    // 将枚举的全部类型设置到EnumSet对象之中
        print(es) ;}public static void print(EnumSet<Color> temp){    // 专门的输出操作for(Color c:temp){        //  循环输出EnumSet中的内容System.out.print(c + "、") ;}System.out.println() ;}
};

三.枚举类的其他使用

1.枚举类型可以跟普通类一样实现接口,从但是实现接口的时候 要求枚举中的每个对象都必须单独覆写接口中的抽象方法。

Eg:

package cn.test.java.enums;
interface Print{public String getColor();
}
enum Colors implements Print{RED{public String getColor(){return "红色";}},GREEN{public String getColor(){return "绿色";}},BLUS{public String getColor(){return "蓝色";}};
}
public class InterfaceEunmDemo {public static void main(String[] args) {for(Colors c:Colors.values()){System.out.println(c.getColor()+"、");}}
}

2.枚举类中定义了抽象方法,但是要求枚举中的每个对象都分别实现此抽象方法。

Eg:

package cn.test.java.enums;
enum ColorDemo2 implements Print{RED{public String getColor(){return "红色";}},GREEN{public String getColor(){return "绿色";}},BLUS{public String getColor(){return "蓝色";}};
}
public class AbstractMethodEunm {public static void main(String[] args) {for(ColorDemo2 c: ColorDemo2.values()){System.out.println(c.getColor()+"、");}}
}

转载于:https://www.cnblogs.com/luihengk/p/3961354.html

中秋佳节--理解Enum枚举相关推荐

  1. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  2. 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战

    package com.learn.design.pattern.creational.singleton;/*** 这个类是Enum类型* 这个枚举非常简单* 枚举类是Object* 他在多线程的时 ...

  3. java enum优点_你需要关注的 Java Enum 枚举的几个细节

    枚举是一个非常古老的语言特性,用来实现具名的有限集合,在 C/C++ 中使用广泛.而 Java 在 Java SE5 才引入枚举.也许语言设计者觉得既然是后引入该特性,那么一定要在这个特性上支持比其他 ...

  4. JDK源码学习笔记——Enum枚举使用及原理

    一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...

  5. 8.String、StringBuffer、enum枚举

    1.字符串相关类 1)string类代表不可变的字符系列. 2)stringBuffer,Buffer就是缓冲区,代表的是可变的字符系列. 这可变和不可变的是怎么理解呢? 如图,不是a的字符系列改变了 ...

  6. java 枚举_深入理解Java枚举

    所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...

  7. C enum(枚举)

    本文转载自:C enum(枚举) 枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读. 枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,--}; 接下来我们举个例子,比 ...

  8. 【Kotlin】Kotlin enum 枚举类 ( 常用用法 | 初始化成员变量 | 实现抽象方法 | 实现接口 | 获取名称和位置索引 | 调用枚举常量方法 )

    文章目录 I . 枚举类常用用法 II . 枚举类初始化 III. 枚举类匿名类 IV . 枚举类实现接口 V . 获取枚举常量名称和位置索引 VI . 获取枚举常量的成员变量 VII . 调用枚举常 ...

  9. php定义枚举,PHP中Enum(枚举)用法实例详解

    本文实例讲述了PHP中Enum(枚举)用法.分享给大家供大家参考,具体如下: PHP其实有Enum类库的,需要安装perl扩展,所以不是php的标准扩展,因此代码的实现需要运行的php环境支持. (1 ...

最新文章

  1. Android各版本新特性
  2. 程序小猿猿,你的数学好吗?
  3. 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
  4. 生产订单形成的差异如何传递到COPA
  5. 科大星云诗社动态20210210
  6. python 获取昨天的日期_利用Python来实现报表的自动发送,解放你时间去做更有意思的事情...
  7. 【二分法】计蒜客:对数方程
  8. Cisco PBR Case2
  9. Maclean写的Oracle入门书
  10. 配置mysql复制基本步骤
  11. python frame框架,第12讲,frame 框架控件
  12. 超级终端连接华为交换机_小编解决win8系统使用超级终端连接华为交换机的设置步骤...
  13. linux游戏盒子恢复默认,dnf多玩补丁_多玩dnf盒子我用了补丁,怎么还原成默认?具体点,......
  14. c# 游戏设计:人物走动动画
  15. 保定2021高考学校成绩查询,2021年保定高考成绩排名查询,成绩什么时候可以查询...
  16. 【CodeForces 767C】Garland (树形DP)
  17. ccf 智能运维 裴丹_智能运维是什么?
  18. win7右键 windows资源管理器已停止完美解决
  19. apmserv mysql5.1启动失败_使用APMServ时出现“1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。”错误的终极解决办法:...
  20. Microsoft Word 设置底纹

热门文章

  1. 【笔记】汇编..寄存器和地址的概述
  2. Silverlight开发廋身攻略(二)
  3. JAVA和C#,武当和少林之争!
  4. 浅谈axios.interceptors拦截器
  5. ★LeetCode(39)——组合总和(JavaScript)
  6. 前端—每天5道面试题(九)
  7. 整合Swagger接口文档
  8. 80后的你现在有多少资产?
  9. 为什么坐飞机时会耳痛?
  10. 当自己购买的基金已经超过自己的心里的收益后会选择继续还是退出?