一.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()+"、");
}
}
}

中秋佳节--理解Enum枚举的更多相关文章

  1. 深入理解Java枚举类型(enum)

    https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...

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

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

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

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

  4. Enum 枚举类

    目录 Enum 枚举类 基础 定义与用途 基本方法 示例 进阶 实现原理 枚举与Class对象 自定义枚举类和构造方法及toString() Enum中使用抽象方法来实现枚举实例的多态性 Enum与接 ...

  5. 深入理解Java枚举

    深入理解Java枚举 重新认识Java枚举 老实说,挺羞愧的,这么久了,一直不知道Java枚举的本质是啥,虽然也在用,但是真不知道它的底层是个啥样的 直到2020年4月28日的晚上20点左右,我才真的 ...

  6. 如何理解java枚举,看例子

    先来看一下不用枚举怎么表示常量: //常量类 class Num { public static String ONE = "ONE"; public static String ...

  7. c# (ENUM)枚举组合类型的谷歌序列化Protobuf

    c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...

  8. C#将Enum枚举映射到文本字符串

    介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...

  9. MVC3不能正确识别JSON中的Enum枚举值

    一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...

随机推荐

  1. Linux 终端訪问 FTP 及 上传下载 文件

    今天同事问我一个问题,在Linux 下訪问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上. google 一下. ...

  2. thinkphp框架的路径问题 - 总结

    thinkphp框架的路径问题 - 总结 (2011-06-21 11:01:28) 转载▼ 标签: thinkphp 框架 路径 杂谈 分类: Php TP中有不少路径的便捷使用方法,比如模板中使用 ...

  3. zabbix-check of pre-requisites

    LAMP搭建完成后,访问http://ip/zabbix,在检查环境界面,有的检查项目提示fail.常见如下:zabbix:Check of pre-requisites1.PHP bcmath fa ...

  4. linux下查看文件及目录个数

    linux下查看文件及目录个数1.查看当前文件和目录总数(不包括子目录):ls -l | wc -l 2.查看当前目录下文件个数(不包括子目录):ls -l |grep "^-"| ...

  5. AE分级渲染

    分级渲染classbreakrenderer位于carto类库中,进行分级渲染时,首先要将相应图层按照某一Field分级.可使用esrisystem类库中的iclassifyGEN类的classify ...

  6. SpringMvc学习-增删改查

    本节主要介绍SpringMVC简单的增删改查功能. 1.查询 dao中的代码 public List<WeatherPojo> getAllWeather(){ String sql=&q ...

  7. 在 Xcode中 修改文件中自动创建的Created by和Copyright

    在Xcode里创建的时候,会自动生成注释 //  Created byxxx on 15/7/10. //  Copyright (c) 2015年 xxxx. All rights reserved ...

  8. Linux安装系统注意事项及系统初始化

      Linux安装系统注意事项 1.分区 学习用途: /boot:200M /swap :内存的1到2倍 /:根据需要分配大小,比如虚拟机下总空间是15G,那么可以分配8——10G跟/分区,如果是生产 ...

  9. 图片ppm编码格式

    ppm图片有2种格式, ASCII格式和binary格式. (1)ppm头部分 由三部分组成,这三部分由回车或换行分割,但PPM的标准中是要求空格. 第一行通常是P3或P6,说明是PPM格式: 第二行 ...

  10. Stripies(POJ 1862 贪心)

    Stripies Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14151   Accepted: 6628 Descrip ...